merchant

Merchant backend to process payments, run by merchants
Log | Files | Refs | Submodules | README | LICENSE

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:
Msrc/backend/taler-merchant-httpd_private-patch-instances-ID.c | 10++++++----
Msrc/backend/taler-merchant-httpd_private-post-instances.c | 10++++++----
Msrc/backend/taler-merchant-httpd_private-post-orders.c | 14++++++++++++--
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) {