fixing #4520: be more aggressive at asserting when API is violated

This commit is contained in:
Christian Grothoff 2016-05-24 20:37:23 +02:00
parent f471cfcec5
commit 079ef7cb6f
3 changed files with 27 additions and 60 deletions

View File

@ -406,42 +406,21 @@ TALER_EXCHANGE_deposit (struct TALER_EXCHANGE_Handle *exchange,
(void) GNUNET_TIME_round_abs (&wire_deadline); (void) GNUNET_TIME_round_abs (&wire_deadline);
(void) GNUNET_TIME_round_abs (&refund_deadline); (void) GNUNET_TIME_round_abs (&refund_deadline);
if (refund_deadline.abs_value_us > wire_deadline.abs_value_us) GNUNET_assert (refund_deadline.abs_value_us <= wire_deadline.abs_value_us);
{ GNUNET_assert (GNUNET_YES ==
GNUNET_break (0); MAH_handle_is_ready (exchange));
return NULL;
}
if (GNUNET_YES !=
MAH_handle_is_ready (exchange))
{
GNUNET_break (0);
return NULL;
}
/* initialize h_wire */ /* initialize h_wire */
if (GNUNET_OK != GNUNET_assert (GNUNET_OK ==
TALER_JSON_hash (wire_details, TALER_JSON_hash (wire_details,
&h_wire)) &h_wire));
{
GNUNET_break (0);
return NULL;
}
key_state = TALER_EXCHANGE_get_keys (exchange); key_state = TALER_EXCHANGE_get_keys (exchange);
dki = TALER_EXCHANGE_get_denomination_key (key_state, dki = TALER_EXCHANGE_get_denomination_key (key_state,
denom_pub); denom_pub);
if (NULL == dki) GNUNET_assert (NULL != dki);
{ GNUNET_assert (GNUNET_SYSERR !=
TALER_LOG_WARNING ("Denomination key unknown to exchange\n"); TALER_amount_subtract (&amount_without_fee,
return NULL; amount,
} &dki->fee_deposit));
if (GNUNET_SYSERR ==
TALER_amount_subtract (&amount_without_fee,
amount,
&dki->fee_deposit))
{
GNUNET_break (0);
return NULL;
}
if (GNUNET_OK != if (GNUNET_OK !=
verify_signatures (dki, verify_signatures (dki,
amount, amount,
@ -523,10 +502,10 @@ TALER_EXCHANGE_deposit (struct TALER_EXCHANGE_Handle *exchange,
strlen (dh->json_enc))); strlen (dh->json_enc)));
ctx = MAH_handle_to_context (exchange); ctx = MAH_handle_to_context (exchange);
dh->job = GNUNET_CURL_job_add (ctx, dh->job = GNUNET_CURL_job_add (ctx,
eh, eh,
GNUNET_YES, GNUNET_YES,
&handle_deposit_finished, &handle_deposit_finished,
dh); dh);
return dh; return dh;
} }

View File

@ -1277,12 +1277,8 @@ TALER_EXCHANGE_refresh_melt (struct TALER_EXCHANGE_Handle *exchange,
unsigned int i; unsigned int i;
unsigned int j; unsigned int j;
if (GNUNET_YES != GNUNET_assert (GNUNET_YES ==
MAH_handle_is_ready (exchange)) MAH_handle_is_ready (exchange));
{
GNUNET_break (0);
return NULL;
}
md = deserialize_melt_data (refresh_data, md = deserialize_melt_data (refresh_data,
refresh_data_length); refresh_data_length);
if (NULL == md) if (NULL == md)
@ -1722,11 +1718,11 @@ handle_refresh_reveal_finished (void *cls,
*/ */
struct TALER_EXCHANGE_RefreshRevealHandle * struct TALER_EXCHANGE_RefreshRevealHandle *
TALER_EXCHANGE_refresh_reveal (struct TALER_EXCHANGE_Handle *exchange, TALER_EXCHANGE_refresh_reveal (struct TALER_EXCHANGE_Handle *exchange,
size_t refresh_data_length, size_t refresh_data_length,
const char *refresh_data, const char *refresh_data,
uint16_t noreveal_index, uint16_t noreveal_index,
TALER_EXCHANGE_RefreshRevealCallback reveal_cb, TALER_EXCHANGE_RefreshRevealCallback reveal_cb,
void *reveal_cb_cls) void *reveal_cb_cls)
{ {
struct TALER_EXCHANGE_RefreshRevealHandle *rrh; struct TALER_EXCHANGE_RefreshRevealHandle *rrh;
json_t *transfer_privs; json_t *transfer_privs;
@ -1736,12 +1732,8 @@ TALER_EXCHANGE_refresh_reveal (struct TALER_EXCHANGE_Handle *exchange,
struct MeltData *md; struct MeltData *md;
unsigned int j; unsigned int j;
if (GNUNET_YES != GNUNET_assert (GNUNET_YES ==
MAH_handle_is_ready (exchange)) MAH_handle_is_ready (exchange));
{
GNUNET_break (0);
return NULL;
}
md = deserialize_melt_data (refresh_data, md = deserialize_melt_data (refresh_data,
refresh_data_length); refresh_data_length);
if (NULL == md) if (NULL == md)

View File

@ -243,12 +243,8 @@ TALER_EXCHANGE_refund (struct TALER_EXCHANGE_Handle *exchange,
json_t *refund_obj; json_t *refund_obj;
CURL *eh; CURL *eh;
if (GNUNET_YES != GNUNET_assert (GNUNET_YES ==
MAH_handle_is_ready (exchange)) MAH_handle_is_ready (exchange));
{
GNUNET_break (0);
return NULL;
}
rr.purpose.purpose = htonl (TALER_SIGNATURE_MERCHANT_REFUND); rr.purpose.purpose = htonl (TALER_SIGNATURE_MERCHANT_REFUND);
rr.purpose.size = htonl (sizeof (struct TALER_RefundRequestPS)); rr.purpose.size = htonl (sizeof (struct TALER_RefundRequestPS));
rr.h_contract = *h_contract; rr.h_contract = *h_contract;