summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2015-09-22 10:16:01 +0200
committerChristian Grothoff <christian@grothoff.org>2015-09-22 10:16:01 +0200
commit8aebcf283a4aecb1d058db8b4f021439e45d3685 (patch)
tree683bb7487e7d07084bdbb84c002719e91a72a770
parent3c8c127e0e629f4075287ad33e54d5c51b24eddb (diff)
downloadexchange-8aebcf283a4aecb1d058db8b4f021439e45d3685.tar.gz
exchange-8aebcf283a4aecb1d058db8b4f021439e45d3685.tar.bz2
exchange-8aebcf283a4aecb1d058db8b4f021439e45d3685.zip
more leaks
-rw-r--r--src/mint/taler-mint-httpd_db.c20
-rw-r--r--src/mintdb/mintdb_plugin.c2
-rw-r--r--src/mintdb/plugin_mintdb_common.c33
-rw-r--r--src/mintdb/plugin_mintdb_postgres.c36
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;i<j;i++)
+ {
+ GNUNET_CRYPTO_rsa_signature_free (melts[i].coin.denom_sig.rsa_signature);
+ GNUNET_CRYPTO_rsa_public_key_free (melts[i].coin.denom_pub.rsa_public_key);
+ }
GNUNET_free (melts);
return TMH_RESPONSE_reply_internal_db_error (connection);
}
@@ -1280,6 +1285,11 @@ TMH_DB_execute_refresh_reveal (struct MHD_Connection *connection,
{
GNUNET_break (0);
GNUNET_free (denom_pubs);
+ for (i=0;i<refresh_session.num_oldcoins;i++)
+ {
+ GNUNET_CRYPTO_rsa_signature_free (melts[i].coin.denom_sig.rsa_signature);
+ GNUNET_CRYPTO_rsa_public_key_free (melts[i].coin.denom_pub.rsa_public_key);
+ }
GNUNET_free (melts);
return (MHD_YES == TMH_RESPONSE_reply_internal_db_error (connection))
? GNUNET_NO : GNUNET_SYSERR;
@@ -1305,10 +1315,20 @@ TMH_DB_execute_refresh_reveal (struct MHD_Connection *connection,
for (j=0;j<refresh_session.num_newcoins;j++)
GNUNET_CRYPTO_rsa_public_key_free (denom_pubs[j].rsa_public_key);
GNUNET_free (denom_pubs);
+ for (i=0;i<refresh_session.num_oldcoins;i++)
+ {
+ GNUNET_CRYPTO_rsa_signature_free (melts[i].coin.denom_sig.rsa_signature);
+ GNUNET_CRYPTO_rsa_public_key_free (melts[i].coin.denom_pub.rsa_public_key);
+ }
GNUNET_free (melts);
return (GNUNET_NO == res) ? MHD_YES : MHD_NO;
}
}
+ for (i=0;i<refresh_session.num_oldcoins;i++)
+ {
+ GNUNET_CRYPTO_rsa_signature_free (melts[i].coin.denom_sig.rsa_signature);
+ GNUNET_CRYPTO_rsa_public_key_free (melts[i].coin.denom_pub.rsa_public_key);
+ }
GNUNET_free (melts);
/* Client request OK, start transaction */
diff --git a/src/mintdb/mintdb_plugin.c b/src/mintdb/mintdb_plugin.c
index 2e8d206fd..d6c33303e 100644
--- a/src/mintdb/mintdb_plugin.c
+++ b/src/mintdb/mintdb_plugin.c
@@ -77,8 +77,10 @@ TALER_MINTDB_plugin_unload (struct TALER_MINTDB_Plugin *plugin)
if (NULL == plugin)
return;
lib_name = plugin->library_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;i<mc->num_newcoins;i++)
- GNUNET_CRYPTO_rsa_public_key_free (mc->denom_pubs[i].rsa_public_key);
- GNUNET_free (mc->denom_pubs);
- for (k=0;k<TALER_CNC_KAPPA;k++)
+ if (NULL != mc->melts)
+ {
+ for (i=0;i<mc->num_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;i<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 (k=0;k<TALER_CNC_KAPPA;k++)
+ {
+ if (NULL != mc->commit_coins[k])
{
- GNUNET_free (mc->commit_coins[k][i].refresh_link);
- GNUNET_free (mc->commit_coins[k][i].coin_ev);
+ for (i=0;i<mc->num_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_index<TALER_CNC_KAPPA;cnc_index++)
- {
- if (NULL != mc->commit_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;
}