commit 2e943032bf46e6cd8839d5292b141a38f7ae61e2
parent f042a1e3d7015625b61947cbae391f34d3a4f61a
Author: Christian Grothoff <christian@grothoff.org>
Date: Thu, 13 Nov 2025 18:39:00 +0100
#10606: refuse instance creation with a default pay delay of forever
Diffstat:
2 files changed, 55 insertions(+), 0 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
@@ -167,6 +167,33 @@ patch_instances_ID (struct TMH_MerchantInstance *mi,
is.default_pay_delay = mi->settings.default_pay_delay;
if (no_refund_delay)
is.default_refund_delay = mi->settings.default_refund_delay;
+ if (GNUNET_TIME_relative_is_forever (is.default_pay_delay))
+ {
+ GNUNET_break_op (0);
+ GNUNET_JSON_parse_free (spec);
+ return TALER_MHD_reply_with_error (connection,
+ MHD_HTTP_BAD_REQUEST,
+ TALER_EC_GENERIC_PARAMETER_MALFORMED,
+ "default_pay_delay");
+ }
+ if (GNUNET_TIME_relative_is_forever (is.default_refund_delay))
+ {
+ GNUNET_break_op (0);
+ GNUNET_JSON_parse_free (spec);
+ return TALER_MHD_reply_with_error (connection,
+ MHD_HTTP_BAD_REQUEST,
+ TALER_EC_GENERIC_PARAMETER_MALFORMED,
+ "default_refund_delay");
+ }
+ if (GNUNET_TIME_relative_is_forever (is.default_wire_transfer_delay))
+ {
+ GNUNET_break_op (0);
+ GNUNET_JSON_parse_free (spec);
+ return TALER_MHD_reply_with_error (connection,
+ MHD_HTTP_BAD_REQUEST,
+ TALER_EC_GENERIC_PARAMETER_MALFORMED,
+ "default_wire_transfer_delay");
+ }
if ( (NULL != is.phone) &&
(NULL != mi->settings.phone) &&
diff --git a/src/backend/taler-merchant-httpd_private-post-instances.c b/src/backend/taler-merchant-httpd_private-post-instances.c
@@ -137,6 +137,34 @@ post_instances (const struct TMH_RequestHandler *rh,
if (no_rounding_interval)
is.default_wire_transfer_rounding_interval
= TMH_default_wire_transfer_rounding_interval;
+ if (GNUNET_TIME_relative_is_forever (is.default_pay_delay))
+ {
+ GNUNET_break_op (0);
+ GNUNET_JSON_parse_free (spec);
+ return TALER_MHD_reply_with_error (connection,
+ MHD_HTTP_BAD_REQUEST,
+ TALER_EC_GENERIC_PARAMETER_MALFORMED,
+ "default_pay_delay");
+ }
+ if (GNUNET_TIME_relative_is_forever (is.default_refund_delay))
+ {
+ GNUNET_break_op (0);
+ GNUNET_JSON_parse_free (spec);
+ return TALER_MHD_reply_with_error (connection,
+ MHD_HTTP_BAD_REQUEST,
+ TALER_EC_GENERIC_PARAMETER_MALFORMED,
+ "default_refund_delay");
+ }
+ if (GNUNET_TIME_relative_is_forever (is.default_wire_transfer_delay))
+ {
+ GNUNET_break_op (0);
+ GNUNET_JSON_parse_free (spec);
+ return TALER_MHD_reply_with_error (connection,
+ MHD_HTTP_BAD_REQUEST,
+ TALER_EC_GENERIC_PARAMETER_MALFORMED,
+ "default_wire_transfer_delay");
+ }
+
{
enum GNUNET_GenericReturnValue ret;