summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2015-07-11 18:25:30 +0200
committerChristian Grothoff <christian@grothoff.org>2015-07-11 18:25:30 +0200
commitee7e690bff1e85b7ac1af66f984fa84588c4c6cc (patch)
treebcf09d04a49628d498cf3e7eda1171db5ba32a6d
parent22f022eccbf7e0f866c3d54684a1eb45708dfc8a (diff)
downloadexchange-ee7e690bff1e85b7ac1af66f984fa84588c4c6cc.tar.gz
exchange-ee7e690bff1e85b7ac1af66f984fa84588c4c6cc.tar.bz2
exchange-ee7e690bff1e85b7ac1af66f984fa84588c4c6cc.zip
fix #3886
-rw-r--r--src/mint/taler-mint-httpd_keystate.c12
-rw-r--r--src/mintdb/mintdb_keyio.c12
2 files changed, 15 insertions, 9 deletions
diff --git a/src/mint/taler-mint-httpd_keystate.c b/src/mint/taler-mint-httpd_keystate.c
index e1509a600..0d4fc40e0 100644
--- a/src/mint/taler-mint-httpd_keystate.c
+++ b/src/mint/taler-mint-httpd_keystate.c
@@ -296,10 +296,12 @@ reload_keys_denom_iter (void *cls,
as it is possible we just retry until we succeed. */
}
- /* FIXME: this is a VERY ugly (we obtain ownership of
- pointers within 'dki' here!!!) #3886 */
- d2 = GNUNET_memdup (dki,
- sizeof (struct TALER_MINTDB_DenominationKeyIssueInformation));
+ d2 = GNUNET_new (struct TALER_MINTDB_DenominationKeyIssueInformation);
+ d2->issue = dki->issue;
+ d2->denom_priv.rsa_private_key
+ = GNUNET_CRYPTO_rsa_private_key_dup (dki->denom_priv.rsa_private_key);
+ d2->denom_pub.rsa_public_key
+ = GNUNET_CRYPTO_rsa_public_key_dup (dki->denom_pub.rsa_public_key);
res = GNUNET_CONTAINER_multihashmap_put (ctx->denomkey_map,
&denom_key_hash,
d2,
@@ -309,6 +311,8 @@ reload_keys_denom_iter (void *cls,
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
"Duplicate denomination key `%s'\n",
alias);
+ GNUNET_CRYPTO_rsa_private_key_free (d2->denom_priv.rsa_private_key);
+ GNUNET_CRYPTO_rsa_public_key_free (d2->denom_pub.rsa_public_key);
GNUNET_free (d2);
return GNUNET_OK;
}
diff --git a/src/mintdb/mintdb_keyio.c b/src/mintdb/mintdb_keyio.c
index 9e2cd60f0..7cf77558b 100644
--- a/src/mintdb/mintdb_keyio.c
+++ b/src/mintdb/mintdb_keyio.c
@@ -270,6 +270,7 @@ denomkeys_iterate_keydir_iter (void *cls,
{
struct DenomkeysIterateContext *dic = cls;
struct TALER_MINTDB_DenominationKeyIssueInformation issue;
+ int ret;
memset (&issue, 0, sizeof (issue));
if (GNUNET_OK !=
@@ -281,11 +282,12 @@ denomkeys_iterate_keydir_iter (void *cls,
filename);
return GNUNET_OK;
}
- /* FIXME: very ugly, 'it' is to free memory WE
- allocated as part of issue!!?? #3886 */
- return dic->it (dic->it_cls,
- dic->alias,
- &issue);
+ ret = dic->it (dic->it_cls,
+ dic->alias,
+ &issue);
+ GNUNET_CRYPTO_rsa_private_key_free (issue.denom_priv.rsa_private_key);
+ GNUNET_CRYPTO_rsa_public_key_free (issue.denom_pub.rsa_public_key);
+ return ret;
}