From eb32dd626a61ab98db4f505aad9a2b9b7cfd6494 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sat, 28 Mar 2020 23:32:02 +0100 Subject: fix leaks and bad RC logic wrt json reference copying --- src/lib/exchange_api_refreshes_reveal.c | 1 + src/testing/testing_api_cmd_deposit.c | 21 ++++++++++----------- src/testing/testing_api_cmd_refresh.c | 18 ++++++++---------- 3 files changed, 19 insertions(+), 21 deletions(-) diff --git a/src/lib/exchange_api_refreshes_reveal.c b/src/lib/exchange_api_refreshes_reveal.c index f15a35ff4..5d186cd32 100644 --- a/src/lib/exchange_api_refreshes_reveal.c +++ b/src/lib/exchange_api_refreshes_reveal.c @@ -239,6 +239,7 @@ handle_refresh_reveal_finished (void *cls, for (unsigned int i = 0; imd->num_fresh_coins; i++) if (NULL != sigs[i].rsa_signature) GNUNET_CRYPTO_rsa_signature_free (sigs[i].rsa_signature); + TALER_EXCHANGE_refreshes_reveal_cancel (rrh); return; } case MHD_HTTP_BAD_REQUEST: diff --git a/src/testing/testing_api_cmd_deposit.c b/src/testing/testing_api_cmd_deposit.c index 666805124..fcba7f270 100644 --- a/src/testing/testing_api_cmd_deposit.c +++ b/src/testing/testing_api_cmd_deposit.c @@ -294,9 +294,8 @@ deposit_run (void *cls, const struct TALER_TESTING_Command *cmd; struct DepositState *ods; - cmd = TALER_TESTING_interpreter_lookup_command - (is, - ds->deposit_reference); + cmd = TALER_TESTING_interpreter_lookup_command (is, + ds->deposit_reference); if (NULL == cmd) { GNUNET_break (0); @@ -306,8 +305,8 @@ deposit_run (void *cls, ods = cmd->cls; ds->coin_reference = ods->coin_reference; ds->coin_index = ods->coin_index; - ds->wire_details = ods->wire_details; - ds->contract_terms = ods->contract_terms; + ds->wire_details = json_incref (ods->wire_details); + ds->contract_terms = json_incref (ods->contract_terms); ds->timestamp = ods->timestamp; ds->refund_deadline = ods->refund_deadline; ds->amount = ods->amount; @@ -319,9 +318,9 @@ deposit_run (void *cls, /* We're copying the merchant key from another deposit operation */ const struct TALER_MerchantPrivateKeyP *merchant_priv; const struct TALER_TESTING_Command *cmd; - cmd = TALER_TESTING_interpreter_lookup_command - (is, - ds->merchant_priv_reference); + + cmd = TALER_TESTING_interpreter_lookup_command (is, + ds->merchant_priv_reference); if (NULL == cmd) { GNUNET_break (0); @@ -340,9 +339,8 @@ deposit_run (void *cls, ds->merchant_priv = *merchant_priv; } GNUNET_assert (ds->coin_reference); - coin_cmd = TALER_TESTING_interpreter_lookup_command - (is, - ds->coin_reference); + coin_cmd = TALER_TESTING_interpreter_lookup_command (is, + ds->coin_reference); if (NULL == coin_cmd) { GNUNET_break (0); @@ -743,6 +741,7 @@ TALER_TESTING_cmd_deposit_replay (const char *label, unsigned int expected_response_code) { struct DepositState *ds; + ds = GNUNET_new (struct DepositState); ds->deposit_reference = deposit_reference; ds->expected_response_code = expected_response_code; diff --git a/src/testing/testing_api_cmd_refresh.c b/src/testing/testing_api_cmd_refresh.c index f290a5add..cfee28dd1 100644 --- a/src/testing/testing_api_cmd_refresh.c +++ b/src/testing/testing_api_cmd_refresh.c @@ -459,9 +459,8 @@ refresh_reveal_run (void *cls, const struct TALER_TESTING_Command *melt_cmd; rrs->is = is; - melt_cmd = TALER_TESTING_interpreter_lookup_command - (is, rrs->melt_reference); - + melt_cmd = TALER_TESTING_interpreter_lookup_command (is, + rrs->melt_reference); if (NULL == melt_cmd) { GNUNET_break (0); @@ -469,12 +468,12 @@ refresh_reveal_run (void *cls, return; } rms = melt_cmd->cls; - rrs->rrh = TALER_EXCHANGE_refreshes_reveal - (is->exchange, - rms->refresh_data_length, - rms->refresh_data, - rms->noreveal_index, - &reveal_cb, rrs); + rrs->rrh = TALER_EXCHANGE_refreshes_reveal (is->exchange, + rms->refresh_data_length, + rms->refresh_data, + rms->noreveal_index, + &reveal_cb, + rrs); if (NULL == rrs->rrh) { @@ -504,7 +503,6 @@ refresh_reveal_cleanup (void *cls, "Command %u (%s) did not complete\n", rrs->is->ip, cmd->label); - TALER_EXCHANGE_refreshes_reveal_cancel (rrs->rrh); rrs->rrh = NULL; } -- cgit v1.2.3