diff options
author | Christian Grothoff <christian@grothoff.org> | 2021-08-06 10:20:58 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2021-08-06 10:20:58 +0200 |
commit | caf6807856e3044f7e1065d84ca189e4d89b3b12 (patch) | |
tree | ef450f7eee7a4496becfd1ecd2cc4221fa8bc686 | |
parent | c71c40d4d62d55730dad032c3ef9f8f645a07efd (diff) |
-fix assertion failure caused by testcase
-rw-r--r-- | src/exchange/taler-exchange-httpd_keys.c | 10 | ||||
-rw-r--r-- | src/exchangedb/plugin_exchangedb_postgres.c | 8 | ||||
-rw-r--r-- | src/testing/testing_api_cmd_insert_deposit.c | 23 |
3 files changed, 39 insertions, 2 deletions
diff --git a/src/exchange/taler-exchange-httpd_keys.c b/src/exchange/taler-exchange-httpd_keys.c index da636d34b..4af28b141 100644 --- a/src/exchange/taler-exchange-httpd_keys.c +++ b/src/exchange/taler-exchange-httpd_keys.c @@ -980,6 +980,16 @@ denomination_info_cb ( struct TEH_KeyStateHandle *ksh = cls; struct TEH_DenominationKey *dk; + if ( (0 == meta->start.abs_value_us) || + (0 == meta->expire_withdraw.abs_value_us) || + (0 == meta->expire_deposit.abs_value_us) || + (0 == meta->expire_legal.abs_value_us) ) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Database contains invalid denomination key %s\n", + GNUNET_h2s (h_denom_pub)); + return; + } dk = GNUNET_new (struct TEH_DenominationKey); dk->denom_pub.rsa_public_key = GNUNET_CRYPTO_rsa_public_key_dup (denom_pub->rsa_public_key); diff --git a/src/exchangedb/plugin_exchangedb_postgres.c b/src/exchangedb/plugin_exchangedb_postgres.c index d0330d784..f589b92fc 100644 --- a/src/exchangedb/plugin_exchangedb_postgres.c +++ b/src/exchangedb/plugin_exchangedb_postgres.c @@ -2753,6 +2753,14 @@ postgres_insert_denomination_info ( }; (void) cls; + GNUNET_assert (0 != GNUNET_TIME_absolute_ntoh ( + issue->properties.start).abs_value_us); + GNUNET_assert (0 != GNUNET_TIME_absolute_ntoh ( + issue->properties.expire_withdraw).abs_value_us); + GNUNET_assert (0 != GNUNET_TIME_absolute_ntoh ( + issue->properties.expire_deposit).abs_value_us); + GNUNET_assert (0 != GNUNET_TIME_absolute_ntoh ( + issue->properties.expire_legal).abs_value_us); /* check fees match coin currency */ GNUNET_assert (GNUNET_YES == TALER_amount_cmp_currency_nbo (&issue->properties.value, diff --git a/src/testing/testing_api_cmd_insert_deposit.c b/src/testing/testing_api_cmd_insert_deposit.c index 607baeef3..b614702a3 100644 --- a/src/testing/testing_api_cmd_insert_deposit.c +++ b/src/testing/testing_api_cmd_insert_deposit.c @@ -81,8 +81,27 @@ struct InsertDepositState static void fake_issue (struct TALER_EXCHANGEDB_DenominationKeyInformationP *issue) { - memset (issue, 0, sizeof (struct - TALER_EXCHANGEDB_DenominationKeyInformationP)); + struct GNUNET_TIME_Absolute now; + + memset (issue, + 0, + sizeof (struct TALER_EXCHANGEDB_DenominationKeyInformationP)); + now = GNUNET_TIME_absolute_get (); + (void) GNUNET_TIME_round_abs (&now); + issue->properties.start + = GNUNET_TIME_absolute_hton (now); + issue->properties.expire_withdraw + = GNUNET_TIME_absolute_hton ( + GNUNET_TIME_absolute_add (now, + GNUNET_TIME_UNIT_MINUTES)); + issue->properties.expire_deposit + = GNUNET_TIME_absolute_hton ( + GNUNET_TIME_absolute_add (now, + GNUNET_TIME_UNIT_HOURS)); + issue->properties.expire_legal + = GNUNET_TIME_absolute_hton ( + GNUNET_TIME_absolute_add (now, + GNUNET_TIME_UNIT_DAYS)); GNUNET_assert (GNUNET_OK == TALER_string_to_amount_nbo ("EUR:1", &issue->properties.value)); |