From 090375c0e8345803c7c666f623e376ed36173452 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Mon, 8 Dec 2014 00:23:43 +0000 Subject: -fix leaks --- .../gnunet-service-scalarproduct_bob.c | 27 ++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) (limited to 'src/scalarproduct/gnunet-service-scalarproduct_bob.c') diff --git a/src/scalarproduct/gnunet-service-scalarproduct_bob.c b/src/scalarproduct/gnunet-service-scalarproduct_bob.c index 38fc65f37..29e2d7eed 100644 --- a/src/scalarproduct/gnunet-service-scalarproduct_bob.c +++ b/src/scalarproduct/gnunet-service-scalarproduct_bob.c @@ -307,6 +307,25 @@ find_matching_cadet_session (const struct GNUNET_HashCode *key) } +/** + * Callback used to free the elements in the map. + * + * @param cls NULL + * @param key key of the element + * @param value the value to free + */ +static int +free_element_cb (void *cls, + const struct GNUNET_HashCode *key, + void *value) +{ + struct GNUNET_SCALARPRODUCT_Element *element = value; + + GNUNET_free (element); + return GNUNET_OK; +} + + /** * Destroy session state, we are done with it. * @@ -351,7 +370,9 @@ destroy_service_session (struct BobServiceSession *s) s)); if (NULL != s->intersected_elements) { - /* FIXME: free elements */ + GNUNET_CONTAINER_multihashmap_iterate (s->intersected_elements, + &free_element_cb, + NULL); GNUNET_CONTAINER_multihashmap_destroy (s->intersected_elements); s->intersected_elements = NULL; } @@ -758,6 +779,7 @@ compute_service_response (struct BobServiceSession *session) &a[q[i]], &r_prime[i])); } + gcry_mpi_release (tmp); // Calculate S' = E(SUM( r_i^2 )) tmp = compute_square_sum (rand, count); @@ -765,6 +787,7 @@ compute_service_response (struct BobServiceSession *session) tmp, 1, &session->s_prime); + gcry_mpi_release (tmp); // Calculate S = E(SUM( (r_i + b_i)^2 )) for (i = 0; i < count; i++) @@ -774,6 +797,7 @@ compute_service_response (struct BobServiceSession *session) tmp, 1, &session->s); + gcry_mpi_release (tmp); session->r = r; session->r_prime = r_prime; @@ -781,7 +805,6 @@ compute_service_response (struct BobServiceSession *session) // release rand, b and a for (i = 0; i < count; i++) gcry_mpi_release (rand[i]); - gcry_mpi_release (tmp); GNUNET_free (session->e_a); session->e_a = NULL; GNUNET_free (p); -- cgit v1.2.3