summaryrefslogtreecommitdiff
path: root/src/backend/taler-merchant-httpd_private-get-orders.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/taler-merchant-httpd_private-get-orders.c')
-rw-r--r--src/backend/taler-merchant-httpd_private-get-orders.c43
1 files changed, 31 insertions, 12 deletions
diff --git a/src/backend/taler-merchant-httpd_private-get-orders.c b/src/backend/taler-merchant-httpd_private-get-orders.c
index 576b9ed8..673728d6 100644
--- a/src/backend/taler-merchant-httpd_private-get-orders.c
+++ b/src/backend/taler-merchant-httpd_private-get-orders.c
@@ -526,14 +526,14 @@ TMH_private_get_orders (const struct TMH_RequestHandler *rh,
}
else
{
- char dummy[2];
+ char dummy;
long long ll;
if (1 !=
sscanf (delta_str,
- "%lld%1s",
+ "%lld%c",
&ll,
- dummy))
+ &dummy))
return TALER_MHD_reply_with_error (connection,
MHD_HTTP_BAD_REQUEST,
TALER_EC_GENERIC_PARAMETER_MALFORMED,
@@ -542,12 +542,12 @@ TMH_private_get_orders (const struct TMH_RequestHandler *rh,
}
}
{
- const char *date_str;
+ const char *date_ms_str;
- date_str = MHD_lookup_connection_value (connection,
- MHD_GET_ARGUMENT_KIND,
- "date");
- if (NULL == date_str)
+ date_ms_str = MHD_lookup_connection_value (connection,
+ MHD_GET_ARGUMENT_KIND,
+ "date_ms");
+ if (NULL == date_ms_str)
{
if (of.delta > 0)
of.date = GNUNET_TIME_UNIT_ZERO_ABS;
@@ -556,13 +556,32 @@ TMH_private_get_orders (const struct TMH_RequestHandler *rh,
}
else
{
- if (GNUNET_OK !=
- GNUNET_STRINGS_fancy_time_to_absolute (date_str,
- &of.date))
+ char dummy;
+ unsigned long long ll;
+
+ if (1 !=
+ sscanf (date_ms_str,
+ "%llu%c",
+ &ll,
+ &dummy))
+ {
+ GNUNET_break_op (0);
return TALER_MHD_reply_with_error (connection,
MHD_HTTP_BAD_REQUEST,
TALER_EC_GENERIC_PARAMETER_MALFORMED,
- "date");
+ "date_ms");
+ }
+ of.date.abs_value_us = ll * GNUNET_TIME_UNIT_MILLISECONDS.rel_value_us;
+ if (of.date.abs_value_us / GNUNET_TIME_UNIT_MILLISECONDS.rel_value_us !=
+ ll)
+ {
+ /* overflow during multiplication detected */
+ GNUNET_break_op (0);
+ return TALER_MHD_reply_with_error (connection,
+ MHD_HTTP_BAD_REQUEST,
+ TALER_EC_GENERIC_PARAMETER_MALFORMED,
+ "date_ms");
+ }
}
}
{