exchange

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

commit ee6b2d5286df473cf51575b025117f273cfa14be
parent b3ff66d05775e94fef9a36eab4ebc67186f825dd
Author: Christian Grothoff <christian@grothoff.org>
Date:   Sat, 18 Jan 2020 18:14:33 +0100

fix leak

Diffstat:
Msrc/auditor/taler-auditor.c | 13+++++++------
Msrc/auditor/taler-wire-auditor.c | 10++++++++--
2 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/src/auditor/taler-auditor.c b/src/auditor/taler-auditor.c @@ -2835,6 +2835,7 @@ check_wire_out_cb &wcc.h_wire)) { GNUNET_break (0); + GNUNET_free (method); return GNUNET_SYSERR; } qs = edb->lookup_wire_transfer (edb->cls, @@ -2881,16 +2882,16 @@ check_wire_out_cb &wcc.total_deposits, wire_fee)) { - report_amount_arithmetic_inconsistency - ("wire out (fee structure)", - rowid, - &wcc.total_deposits, - wire_fee, - -1); + report_amount_arithmetic_inconsistency ("wire out (fee structure)", + rowid, + &wcc.total_deposits, + wire_fee, + -1); /* If fee arithmetic fails, we just assume the fee is zero */ final_amount = wcc.total_deposits; } } + GNUNET_free (method); /* Round down to amount supported by wire method */ GNUNET_break (TALER_amount_round_down (&final_amount, diff --git a/src/auditor/taler-wire-auditor.c b/src/auditor/taler-wire-auditor.c @@ -1362,6 +1362,7 @@ history_debit_cb (void *cls, { struct WireAccount *wa = cls; struct ReserveOutInfo *roi; + size_t slen; (void) json; if (NULL == details) @@ -1389,14 +1390,19 @@ history_debit_cb (void *cls, TALER_B2S (&details->wtid)); /* Update offset */ wa->out_wire_off = row_off; - roi = GNUNET_new (struct ReserveOutInfo); + slen = strlen (details->credit_account_url) + 1; + roi = GNUNET_malloc (sizeof (struct ReserveOutInfo) + + slen); GNUNET_CRYPTO_hash (&details->wtid, sizeof (details->wtid), &roi->subject_hash); roi->details.amount = details->amount; roi->details.execution_date = details->execution_date; roi->details.wtid = details->wtid; - roi->details.credit_account_url = GNUNET_strdup (details->credit_account_url); + roi->details.credit_account_url = (const char *) &roi[1]; + memcpy (&roi[1], + details->credit_account_url, + slen); if (GNUNET_OK != GNUNET_CONTAINER_multihashmap_put (out_map, &roi->subject_hash,