From 9b0f977e2c87c23a7537661b6b8d305e01fd3a11 Mon Sep 17 00:00:00 2001 From: Matthias Wachs Date: Fri, 28 Jun 2013 14:01:40 +0000 Subject: [PATCH] fixing memory leak: unused hashmap fixing segfault by adding NULL check --- src/ats/gnunet-service-ats-solver_proportional.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/ats/gnunet-service-ats-solver_proportional.c b/src/ats/gnunet-service-ats-solver_proportional.c index 51246f152..d6b277406 100644 --- a/src/ats/gnunet-service-ats-solver_proportional.c +++ b/src/ats/gnunet-service-ats-solver_proportional.c @@ -264,8 +264,6 @@ struct GAS_PROPORTIONAL_Handle */ void *get_preferences_cls; - struct GNUNET_CONTAINER_MultiHashMap *prefs; - struct PreferenceClient *pc_head; struct PreferenceClient *pc_tail; }; @@ -360,6 +358,7 @@ struct AddressWrapper static int is_bandwidth_available_in_network (struct Network *net) { + GNUNET_assert (NULL != net); unsigned int na = net->active_addresses + 1; uint32_t min_bw = ntohl (GNUNET_CONSTANTS_DEFAULT_BW_IN_OUT.value__); if (((net->total_quota_in / na) > min_bw) && @@ -892,6 +891,13 @@ GAS_proportional_get_preferred_address (void *solver, (GNUNET_NO == cur->active) ? "inactive" : "active", cur, GNUNET_i2s (peer)); net_cur = (struct Network *) cur->solver_information; + if (NULL == cur) + { + LOG (GNUNET_ERROR_TYPE_ERROR, "Trying to suggesting unknown address peer `%s'\n", + GNUNET_i2s (peer)); + GNUNET_break (0); + return NULL; + } if (GNUNET_YES == cur->active) { /* This address was selected previously, so no need to update quotas */ @@ -1103,6 +1109,7 @@ GAS_proportional_address_update (void *solver, /* set new network type */ new_net = get_network (solver, addr_net); + GNUNET_assert (NULL != new_net); address->solver_information = new_net; /* Add to new network and update*/ @@ -1256,7 +1263,6 @@ GAS_proportional_init (const struct GNUNET_CONFIGURATION_Handle *cfg, s->network_entries = GNUNET_malloc (dest_length * sizeof (struct Network)); s->active_addresses = 0; s->total_addresses = 0; - s->prefs = GNUNET_CONTAINER_multihashmap_create (10, GNUNET_NO); for (c = 0; c < dest_length; c++) { -- 2.25.1