summaryrefslogtreecommitdiff
path: root/src/exchange/taler-exchange-httpd_purses_merge.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2023-02-17 16:57:29 +0100
committerChristian Grothoff <christian@grothoff.org>2023-02-17 16:57:29 +0100
commit86e0f2c70d07c7c5e1656667bd818498ea55d0a4 (patch)
treedba9439c62d1b017319d9e313a82b33ea6c68187 /src/exchange/taler-exchange-httpd_purses_merge.c
parent87a78c6f8ce1d50a5f61eb5c3f222cdef0b635ee (diff)
downloadexchange-86e0f2c70d07c7c5e1656667bd818498ea55d0a4.tar.gz
exchange-86e0f2c70d07c7c5e1656667bd818498ea55d0a4.tar.bz2
exchange-86e0f2c70d07c7c5e1656667bd818498ea55d0a4.zip
fix memory leak and transaction error handling related to KYC
Diffstat (limited to 'src/exchange/taler-exchange-httpd_purses_merge.c')
-rw-r--r--src/exchange/taler-exchange-httpd_purses_merge.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/exchange/taler-exchange-httpd_purses_merge.c b/src/exchange/taler-exchange-httpd_purses_merge.c
index 174131a3b..d246263f1 100644
--- a/src/exchange/taler-exchange-httpd_purses_merge.c
+++ b/src/exchange/taler-exchange-httpd_purses_merge.c
@@ -280,7 +280,7 @@ merge_transaction (void *cls,
bool in_conflict = true;
bool no_balance = true;
bool no_partner = true;
- const char *required;
+ char *required;
qs = TALER_KYCLOGIC_kyc_test_required (
TALER_KYCLOGIC_KYC_TRIGGER_P2P_RECEIVE,
@@ -305,11 +305,22 @@ merge_transaction (void *cls,
if (NULL != required)
{
pcc->kyc.ok = false;
- return TEH_plugin->insert_kyc_requirement_for_account (
+ qs = TEH_plugin->insert_kyc_requirement_for_account (
TEH_plugin->cls,
required,
&pcc->h_payto,
&pcc->kyc.requirement_row);
+ GNUNET_free (required);
+ if (GNUNET_DB_STATUS_HARD_ERROR == qs)
+ {
+ GNUNET_break (0);
+ *mhd_ret
+ = TALER_MHD_reply_with_error (connection,
+ MHD_HTTP_INTERNAL_SERVER_ERROR,
+ TALER_EC_GENERIC_DB_STORE_FAILED,
+ "insert_kyc_requirement_for_account");
+ }
+ return qs;
}
pcc->kyc.ok = true;
qs = TEH_plugin->do_purse_merge (