summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2021-08-06 10:20:58 +0200
committerChristian Grothoff <christian@grothoff.org>2021-08-06 10:20:58 +0200
commitcaf6807856e3044f7e1065d84ca189e4d89b3b12 (patch)
treeef450f7eee7a4496becfd1ecd2cc4221fa8bc686
parentc71c40d4d62d55730dad032c3ef9f8f645a07efd (diff)
downloadexchange-caf6807856e3044f7e1065d84ca189e4d89b3b12.tar.gz
exchange-caf6807856e3044f7e1065d84ca189e4d89b3b12.tar.bz2
exchange-caf6807856e3044f7e1065d84ca189e4d89b3b12.zip
-fix assertion failure caused by testcase
-rw-r--r--src/exchange/taler-exchange-httpd_keys.c10
-rw-r--r--src/exchangedb/plugin_exchangedb_postgres.c8
-rw-r--r--src/testing/testing_api_cmd_insert_deposit.c23
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 da636d34..4af28b14 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 d0330d78..f589b92f 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 607baeef..b614702a 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));