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 | |
| parent | 8fa6b996ed70bc4079b1b4f6b34bcda58a4094bd (diff) | |
do not crash on odd inputs
Diffstat (limited to 'src')
| -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 8c00effc..4ef76c88 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 != | 
