diff options
author | Christian Grothoff <christian@grothoff.org> | 2023-02-17 16:57:29 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2023-02-17 16:57:29 +0100 |
commit | 86e0f2c70d07c7c5e1656667bd818498ea55d0a4 (patch) | |
tree | dba9439c62d1b017319d9e313a82b33ea6c68187 /src/exchange/taler-exchange-httpd_reserves_purse.c | |
parent | 87a78c6f8ce1d50a5f61eb5c3f222cdef0b635ee (diff) |
fix memory leak and transaction error handling related to KYC
Diffstat (limited to 'src/exchange/taler-exchange-httpd_reserves_purse.c')
-rw-r--r-- | src/exchange/taler-exchange-httpd_reserves_purse.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/exchange/taler-exchange-httpd_reserves_purse.c b/src/exchange/taler-exchange-httpd_reserves_purse.c index d62c1db9..5e39f810 100644 --- a/src/exchange/taler-exchange-httpd_reserves_purse.c +++ b/src/exchange/taler-exchange-httpd_reserves_purse.c @@ -189,8 +189,7 @@ purse_transaction (void *cls, { struct ReservePurseContext *rpc = cls; enum GNUNET_DB_QueryStatus qs; - - const char *required; + char *required; qs = TALER_KYCLOGIC_kyc_test_required ( TALER_KYCLOGIC_KYC_TRIGGER_P2P_RECEIVE, @@ -215,11 +214,22 @@ purse_transaction (void *cls, if (NULL != required) { rpc->kyc.ok = false; - return TEH_plugin->insert_kyc_requirement_for_account ( + qs = TEH_plugin->insert_kyc_requirement_for_account ( TEH_plugin->cls, required, &rpc->h_payto, &rpc->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; } rpc->kyc.ok = true; |