exchange

Base system with REST service to issue digital coins, run by the payment service provider
Log | Files | Refs | Submodules | README | LICENSE

commit 6a22af30972d2c48947a004e37bf0566a1932856
parent a12a3ab62dd4b689378cdc974040aeb5d93df85c
Author: Christian Grothoff <christian@grothoff.org>
Date:   Fri,  9 May 2025 17:48:48 +0200

-fix another leak

Diffstat:
Msrc/lib/exchange_api_refresh_common.c | 2++
Msrc/lib/exchange_api_reveal_melt.c | 2--
Msrc/testing/testing_api_cmd_refresh.c | 21+++++++++++++++++----
Msrc/util/secmod_rsa.c | 3---
4 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/src/lib/exchange_api_refresh_common.c b/src/lib/exchange_api_refresh_common.c @@ -23,6 +23,7 @@ #include "platform.h" #include "exchange_api_refresh_common.h" + void TALER_EXCHANGE_free_melt_data_v27 (struct MeltData_v27 *md) { @@ -30,6 +31,7 @@ TALER_EXCHANGE_free_melt_data_v27 (struct MeltData_v27 *md) { for (unsigned int i = 0; i < md->num_fresh_coins; i++) TALER_blinded_planchet_free (&md->kappa_blinded_planchets[k][i]); + GNUNET_free (md->kappa_blinded_planchets[k]); } GNUNET_free (md->denoms_h); GNUNET_free (md->denom_pubs); diff --git a/src/lib/exchange_api_reveal_melt.c b/src/lib/exchange_api_reveal_melt.c @@ -355,8 +355,6 @@ perform_protocol ( curl_easy_cleanup (curlh); TALER_EXCHANGE_reveal_melt_cancel (mrh); } - - return; } diff --git a/src/testing/testing_api_cmd_refresh.c b/src/testing/testing_api_cmd_refresh.c @@ -569,9 +569,8 @@ melt_reveal_run (void *cls, rms->reveal_melt_input.rms = &rms->rms; rms->reveal_melt_input.melt_input = &rms->melt_input; rms->reveal_melt_input.blinding_seed = rms->no_blinding_seed - ? NULL - : &rms-> - blinding_seed; + ? NULL + : &rms->blinding_seed; rms->reveal_melt_input.num_blinding_values = rms->num_blinding_values; rms->reveal_melt_input.blinding_values = rms->blinding_values; rms->reveal_melt_input.noreveal_index = rms->noreveal_index; @@ -711,6 +710,13 @@ melt_cb (void *cls, if (NULL != mr->details.ok.blinding_seed) rms->blinding_seed = *mr->details.ok.blinding_seed; rms->num_blinding_values = mr->details.ok.num_melt_blinding_values; + if (NULL != rms->blinding_values) + { + GNUNET_break (0); /* can this this happen? Check! */ + for (unsigned int i = 0; i < rms->num_blinding_values; i++) + TALER_denom_ewv_free (&rms->blinding_values[i]); + GNUNET_free (rms->blinding_values); + } rms->blinding_values = GNUNET_new_array ( rms->num_blinding_values, struct TALER_ExchangeBlindingValues); @@ -778,6 +784,13 @@ melt_run (void *cls, num_fresh_coins++) ; rms->num_fresh_coins = num_fresh_coins; + /* Free old data structure in case this is a retry! */ + if (NULL != rms->fresh_pks) + { + for (unsigned int i = 0; i < rms->num_fresh_coins; i++) + TALER_denom_pub_free (&rms->fresh_pks[i].key); + GNUNET_free (rms->fresh_pks); + } rms->fresh_pks = GNUNET_new_array ( num_fresh_coins, struct TALER_EXCHANGE_DenomPublicKey); @@ -1027,7 +1040,7 @@ melt_traits (void *cls, (NULL != rms->reveal_melt_input.blinding_values) ? TALER_TESTING_make_trait_exchange_blinding_values ( index, - &rms->reveal_melt_input.blinding_values[index ]) + &rms->reveal_melt_input.blinding_values[index]) : TALER_TESTING_trait_end (), TALER_TESTING_trait_end () }; diff --git a/src/util/secmod_rsa.c b/src/util/secmod_rsa.c @@ -1980,9 +1980,6 @@ TALER_SECMOD_rsa_run (void *cls, GNUNET_free (secname); return; } - GNUNET_asprintf (&secname, - "%s-secmod-rsa", - opt->section); opt->global_ret = TES_listen_start (cfg, secname, &cb);