From caf6807856e3044f7e1065d84ca189e4d89b3b12 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Fri, 6 Aug 2021 10:20:58 +0200 Subject: -fix assertion failure caused by testcase --- src/exchange/taler-exchange-httpd_keys.c | 10 ++++++++++ src/exchangedb/plugin_exchangedb_postgres.c | 8 ++++++++ src/testing/testing_api_cmd_insert_deposit.c | 23 +++++++++++++++++++++-- 3 files changed, 39 insertions(+), 2 deletions(-) (limited to 'src') 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)); -- cgit v1.2.3