summaryrefslogtreecommitdiff
path: root/src/backend
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2022-02-19 21:10:20 +0100
committerChristian Grothoff <christian@grothoff.org>2022-02-19 21:10:20 +0100
commit74c7c7aa00cb6d30908a59bc00104d819017edaa (patch)
treee8faf8496efe3cce185b028dfb4b15bef0dae3ab /src/backend
parentd9e9f196097e04c64d6f0575910200749ee03ea3 (diff)
downloadmerchant-74c7c7aa00cb6d30908a59bc00104d819017edaa.tar.gz
merchant-74c7c7aa00cb6d30908a59bc00104d819017edaa.tar.bz2
merchant-74c7c7aa00cb6d30908a59bc00104d819017edaa.zip
prevent orders with an infinite (never) wire_deadline from being created; fixes #7158
Diffstat (limited to 'src/backend')
-rw-r--r--src/backend/taler-merchant-httpd_private-patch-instances-ID.c10
-rw-r--r--src/backend/taler-merchant-httpd_private-post-instances.c10
-rw-r--r--src/backend/taler-merchant-httpd_private-post-orders.c14
3 files changed, 24 insertions, 10 deletions
diff --git a/src/backend/taler-merchant-httpd_private-patch-instances-ID.c b/src/backend/taler-merchant-httpd_private-patch-instances-ID.c
index 2ea0508b..727a641e 100644
--- a/src/backend/taler-merchant-httpd_private-patch-instances-ID.c
+++ b/src/backend/taler-merchant-httpd_private-patch-instances-ID.c
@@ -175,10 +175,12 @@ patch_instances_ID (struct TMH_MerchantInstance *mi,
&is.default_max_wire_fee)) &&
(mi->settings.default_wire_fee_amortization ==
is.default_wire_fee_amortization) &&
- (mi->settings.default_wire_transfer_delay.rel_value_us ==
- is.default_wire_transfer_delay.rel_value_us) &&
- (mi->settings.default_pay_delay.rel_value_us ==
- is.default_pay_delay.rel_value_us) ) )
+ (GNUNET_TIME_relative_cmp (mi->settings.default_wire_transfer_delay,
+ ==,
+ is.default_wire_transfer_delay)) &&
+ (GNUNET_TIME_relative_cmp (mi->settings.default_pay_delay,
+ ==,
+ is.default_pay_delay)) ) )
{
is.id = mi->settings.id;
is.name = GNUNET_strdup (name);
diff --git a/src/backend/taler-merchant-httpd_private-post-instances.c b/src/backend/taler-merchant-httpd_private-post-instances.c
index d512d439..e760d8e5 100644
--- a/src/backend/taler-merchant-httpd_private-post-instances.c
+++ b/src/backend/taler-merchant-httpd_private-post-instances.c
@@ -295,10 +295,12 @@ TMH_private_post_instances (const struct TMH_RequestHandler *rh,
&is.default_max_wire_fee)) &&
(mi->settings.default_wire_fee_amortization ==
is.default_wire_fee_amortization) &&
- (mi->settings.default_wire_transfer_delay.rel_value_us ==
- is.default_wire_transfer_delay.rel_value_us) &&
- (mi->settings.default_pay_delay.rel_value_us ==
- is.default_pay_delay.rel_value_us) &&
+ (GNUNET_TIME_relative_cmp (mi->settings.default_wire_transfer_delay,
+ ==,
+ is.default_wire_transfer_delay)) &&
+ (GNUNET_TIME_relative_cmp (mi->settings.default_pay_delay,
+ ==,
+ is.default_pay_delay)) &&
(accounts_equal (mi,
payto_uris)) )
{
diff --git a/src/backend/taler-merchant-httpd_private-post-orders.c b/src/backend/taler-merchant-httpd_private-post-orders.c
index 666505f9..d144c53c 100644
--- a/src/backend/taler-merchant-httpd_private-post-orders.c
+++ b/src/backend/taler-merchant-httpd_private-post-orders.c
@@ -893,6 +893,16 @@ patch_order (struct MHD_Connection *connection,
refund_delay));
wire_deadline = GNUNET_TIME_timestamp_max (refund_deadline,
t);
+ if (GNUNET_TIME_absolute_is_never (wire_deadline.abs_time))
+ {
+ GNUNET_break_op (0);
+ return TALER_MHD_reply_with_error (
+ connection,
+ MHD_HTTP_BAD_REQUEST,
+ TALER_EC_MERCHANT_PRIVATE_POST_ORDERS_WIRE_DEADLINE_IS_NEVER,
+ "order:wire_transfer_deadline");
+
+ }
GNUNET_assert (0 ==
json_object_set_new (order,
"wire_transfer_deadline",
@@ -930,8 +940,8 @@ patch_order (struct MHD_Connection *connection,
json_object_set_new (
order,
"max_fee",
- TALER_JSON_from_amount
- (&settings->default_max_deposit_fee)));
+ TALER_JSON_from_amount (
+ &settings->default_max_deposit_fee)));
}
if (0 == wire_fee_amortization)
{