summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/reducer/anastasis_api_backup_redux.c13
-rw-r--r--src/reducer/anastasis_api_redux.c6
2 files changed, 14 insertions, 5 deletions
diff --git a/src/reducer/anastasis_api_backup_redux.c b/src/reducer/anastasis_api_backup_redux.c
index e025810..c8c0404 100644
--- a/src/reducer/anastasis_api_backup_redux.c
+++ b/src/reducer/anastasis_api_backup_redux.c
@@ -667,10 +667,13 @@ struct PolicyBuilder
static void
free_costs (struct Costs *costs)
{
- if (NULL == costs)
- return;
- free_costs (costs->next);
- GNUNET_free (costs);
+ while (NULL != costs)
+ {
+ struct Costs *next = costs->next;
+
+ GNUNET_free (costs);
+ costs = next;
+ }
}
@@ -1548,6 +1551,8 @@ clean_pb (struct PolicyBuilder *pb)
GNUNET_CONTAINER_DLL_remove (p->pm_head,
p->pm_tail,
pm);
+ for (unsigned int i = 0; i<pb->req_methods; i++)
+ free_costs (pm->providers[i].usage_fee);
GNUNET_free (pm->providers);
GNUNET_free (pm);
}
diff --git a/src/reducer/anastasis_api_redux.c b/src/reducer/anastasis_api_redux.c
index 6262033..f55eece 100644
--- a/src/reducer/anastasis_api_redux.c
+++ b/src/reducer/anastasis_api_redux.c
@@ -349,7 +349,6 @@ free_config_request (struct ConfigRequest *cr)
GNUNET_free (cr->business_name);
for (unsigned int i = 0; i<cr->methods_length; i++)
GNUNET_free (cr->methods[i].type);
- GNUNET_free (cr->business_name);
GNUNET_free (cr->methods);
GNUNET_free (cr);
}
@@ -571,8 +570,13 @@ config_cb (void *cls,
}
else
{
+ GNUNET_free (cr->currency);
cr->currency = GNUNET_strdup (acfg->currency);
+ GNUNET_free (cr->business_name);
cr->business_name = GNUNET_strdup (acfg->business_name);
+ for (unsigned int i = 0; i<cr->methods_length; i++)
+ GNUNET_free (cr->methods[i].type);
+ GNUNET_free (cr->methods);
cr->methods = GNUNET_new_array (acfg->methods_length,
struct AuthorizationMethodConfig);
for (unsigned int i = 0; i<acfg->methods_length; i++)