diff options
author | Christian Grothoff <christian@grothoff.org> | 2022-02-19 21:10:20 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2022-02-19 21:10:20 +0100 |
commit | 74c7c7aa00cb6d30908a59bc00104d819017edaa (patch) | |
tree | e8faf8496efe3cce185b028dfb4b15bef0dae3ab /src/backend | |
parent | d9e9f196097e04c64d6f0575910200749ee03ea3 (diff) | |
download | merchant-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')
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) { |