From 8aebcf283a4aecb1d058db8b4f021439e45d3685 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Tue, 22 Sep 2015 10:16:01 +0200 Subject: [PATCH] more leaks --- src/mint/taler-mint-httpd_db.c | 20 ++++++++++++++++ src/mintdb/mintdb_plugin.c | 2 ++ src/mintdb/plugin_mintdb_common.c | 33 ++++++++++++++++++-------- src/mintdb/plugin_mintdb_postgres.c | 36 +++++++++-------------------- 4 files changed, 57 insertions(+), 34 deletions(-) diff --git a/src/mint/taler-mint-httpd_db.c b/src/mint/taler-mint-httpd_db.c index 5918607c5..247a84e9d 100644 --- a/src/mint/taler-mint-httpd_db.c +++ b/src/mint/taler-mint-httpd_db.c @@ -1265,6 +1265,11 @@ TMH_DB_execute_refresh_reveal (struct MHD_Connection *connection, &melts[j])) { GNUNET_break (0); + for (i=0;ilibrary_name; +#if SKIP GNUNET_assert (NULL == GNUNET_PLUGIN_unload (lib_name, plugin)); +#endif GNUNET_free (lib_name); } diff --git a/src/mintdb/plugin_mintdb_common.c b/src/mintdb/plugin_mintdb_common.c index 99ff92ae3..bbe104f6c 100644 --- a/src/mintdb/plugin_mintdb_common.c +++ b/src/mintdb/plugin_mintdb_common.c @@ -127,19 +127,34 @@ common_free_melt_commitment (void *cls, unsigned int i; unsigned int k; - GNUNET_free (mc->melts); - for (i=0;inum_newcoins;i++) - GNUNET_CRYPTO_rsa_public_key_free (mc->denom_pubs[i].rsa_public_key); - GNUNET_free (mc->denom_pubs); - for (k=0;kmelts) + { + for (i=0;inum_oldcoins;i++) + { + GNUNET_CRYPTO_rsa_signature_free (mc->melts[i].coin.denom_sig.rsa_signature); + GNUNET_CRYPTO_rsa_public_key_free (mc->melts[i].coin.denom_pub.rsa_public_key); + } + GNUNET_free (mc->melts); + } + if (NULL != mc->denom_pubs) { for (i=0;inum_newcoins;i++) + if (NULL != mc->denom_pubs[i].rsa_public_key) + GNUNET_CRYPTO_rsa_public_key_free (mc->denom_pubs[i].rsa_public_key); + GNUNET_free (mc->denom_pubs); + } + for (k=0;kcommit_coins[k]) { - GNUNET_free (mc->commit_coins[k][i].refresh_link); - GNUNET_free (mc->commit_coins[k][i].coin_ev); + for (i=0;inum_newcoins;i++) + { + GNUNET_free (mc->commit_coins[k][i].refresh_link); + GNUNET_free (mc->commit_coins[k][i].coin_ev); + } + GNUNET_free (mc->commit_coins[k]); } - GNUNET_free (mc->commit_coins[k]); - GNUNET_free (mc->commit_links[k]); + GNUNET_free_non_null (mc->commit_links[k]); } GNUNET_free (mc); } diff --git a/src/mintdb/plugin_mintdb_postgres.c b/src/mintdb/plugin_mintdb_postgres.c index 621108026..1347875e3 100644 --- a/src/mintdb/plugin_mintdb_postgres.c +++ b/src/mintdb/plugin_mintdb_postgres.c @@ -2273,12 +2273,15 @@ get_known_coin (void *cls, return GNUNET_YES; { struct TALER_PQ_ResultSpec rs[] = { - TALER_PQ_result_spec_rsa_public_key ("denom_pub", &coin_info->denom_pub.rsa_public_key), - TALER_PQ_result_spec_rsa_signature ("denom_sig", &coin_info->denom_sig.rsa_signature), + TALER_PQ_result_spec_rsa_public_key ("denom_pub", + &coin_info->denom_pub.rsa_public_key), + TALER_PQ_result_spec_rsa_signature ("denom_sig", + &coin_info->denom_sig.rsa_signature), TALER_PQ_result_spec_end }; - if (GNUNET_OK != TALER_PQ_extract_result (result, rs, 0)) + if (GNUNET_OK != + TALER_PQ_extract_result (result, rs, 0)) { PQclear (result); GNUNET_break (0); @@ -2428,7 +2431,11 @@ postgres_get_refresh_melt (void *cls, &coin)) return GNUNET_SYSERR; if (NULL == melt) + { + GNUNET_CRYPTO_rsa_signature_free (coin.denom_sig.rsa_signature); + GNUNET_CRYPTO_rsa_public_key_free (coin.denom_pub.rsa_public_key); return GNUNET_OK; + } melt->coin = coin; melt->coin_sig = coin_sig; melt->session_hash = *session_hash; @@ -2974,28 +2981,7 @@ postgres_get_melt_commitment (void *cls, return mc; cleanup: - GNUNET_free_non_null (mc->melts); - if (NULL != mc->denom_pubs) - { - for (i=0;i<(unsigned int) mc->num_newcoins;i++) - if (NULL != mc->denom_pubs[i].rsa_public_key) - GNUNET_CRYPTO_rsa_public_key_free (mc->denom_pubs[i].rsa_public_key); - GNUNET_free (mc->denom_pubs); - } - for (cnc_index=0;cnc_indexcommit_coins[cnc_index]) - { - for (i=0;i<(unsigned int) mc->num_newcoins;i++) - { - GNUNET_free_non_null (mc->commit_coins[cnc_index][i].refresh_link); - GNUNET_free_non_null (mc->commit_coins[cnc_index][i].coin_ev); - } - GNUNET_free (mc->commit_coins[cnc_index]); - } - GNUNET_free_non_null (mc->commit_links[cnc_index]); - } - GNUNET_free (mc); + common_free_melt_commitment (cls, mc); return NULL; }