diff options
author | Christian Grothoff <christian@grothoff.org> | 2020-03-26 19:25:35 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2020-03-26 19:25:35 +0100 |
commit | e63d3121314c7238930c55d40673640e327f964c (patch) | |
tree | fbda65b5fc727f8708c1275672826e5760072908 /src/lib/exchange_api_deposit.c | |
parent | 8fa6b996ed70bc4079b1b4f6b34bcda58a4094bd (diff) |
do not crash on odd inputs
Diffstat (limited to 'src/lib/exchange_api_deposit.c')
-rw-r--r-- | src/lib/exchange_api_deposit.c | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/src/lib/exchange_api_deposit.c b/src/lib/exchange_api_deposit.c index 8c00effcf..4ef76c886 100644 --- a/src/lib/exchange_api_deposit.c +++ b/src/lib/exchange_api_deposit.c @@ -148,7 +148,11 @@ auditor_cb (void *cls, key_state = TALER_EXCHANGE_get_keys (dh->exchange); spk = TALER_EXCHANGE_get_signing_key_info (key_state, &dh->exchange_pub); - GNUNET_assert (NULL != spk); + if (NULL == spk) + { + GNUNET_break_op (0); + return NULL; + } TALER_amount_ntoh (&amount_without_fee, &dh->depconf.amount_without_fee); aie = GNUNET_new (struct TEAH_AuditorInteractionEntry); @@ -544,7 +548,11 @@ TALER_EXCHANGE_deposit (struct TALER_EXCHANGE_Handle *exchange, } (void) GNUNET_TIME_round_abs (&wire_deadline); (void) GNUNET_TIME_round_abs (&refund_deadline); - GNUNET_assert (refund_deadline.abs_value_us <= wire_deadline.abs_value_us); + if (refund_deadline.abs_value_us > wire_deadline.abs_value_us) + { + GNUNET_break (0); + return NULL; + } GNUNET_assert (GNUNET_YES == TEAH_handle_is_ready (exchange)); /* initialize h_wire */ @@ -558,11 +566,19 @@ TALER_EXCHANGE_deposit (struct TALER_EXCHANGE_Handle *exchange, key_state = TALER_EXCHANGE_get_keys (exchange); dki = TALER_EXCHANGE_get_denomination_key (key_state, denom_pub); - GNUNET_assert (NULL != dki); - GNUNET_assert (GNUNET_SYSERR != - TALER_amount_subtract (&amount_without_fee, - amount, - &dki->fee_deposit)); + if (NULL == dki) + { + GNUNET_break (0); + return NULL; + } + if (GNUNET_SYSERR == + TALER_amount_subtract (&amount_without_fee, + amount, + &dki->fee_deposit)) + { + GNUNET_break_op (0); + return NULL; + } GNUNET_CRYPTO_rsa_public_key_hash (denom_pub->rsa_public_key, &denom_pub_hash); if (GNUNET_OK != |