summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2020-03-28 23:32:02 +0100
committerChristian Grothoff <christian@grothoff.org>2020-03-28 23:32:02 +0100
commiteb32dd626a61ab98db4f505aad9a2b9b7cfd6494 (patch)
tree74f0d2a00bbc4710a192415a6f81db787f200504 /src
parent677654f609048a1b45d9fc05eb97141c320e9540 (diff)
downloadexchange-eb32dd626a61ab98db4f505aad9a2b9b7cfd6494.tar.gz
exchange-eb32dd626a61ab98db4f505aad9a2b9b7cfd6494.tar.bz2
exchange-eb32dd626a61ab98db4f505aad9a2b9b7cfd6494.zip
fix leaks and bad RC logic wrt json reference copying
Diffstat (limited to 'src')
-rw-r--r--src/lib/exchange_api_refreshes_reveal.c1
-rw-r--r--src/testing/testing_api_cmd_deposit.c21
-rw-r--r--src/testing/testing_api_cmd_refresh.c18
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; i<rrh->md->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;
}