commit 74c7c7aa00cb6d30908a59bc00104d819017edaa
parent d9e9f196097e04c64d6f0575910200749ee03ea3
Author: Christian Grothoff <christian@grothoff.org>
Date: Sat, 19 Feb 2022 21:10:20 +0100
prevent orders with an infinite (never) wire_deadline from being created; fixes #7158
Diffstat:
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
@@ -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
@@ -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
@@ -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)
{