commit 7ef28642466f51bf065e3988966a184ceb88fef4
parent 3433153426fe443a551a4bd1104959058e111858
Author: Louis Burda <quent.burda@gmail.com>
Date: Mon, 12 Jun 2023 20:25:51 +0200
Make parsing more robust against mishaps
Diffstat:
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/hmd.c b/src/hmd.c
@@ -248,12 +248,12 @@ hmd_date_parse_daydate_iso8601(struct hmd_date *date, char *arg)
enum hmd_err err;
uint64_t next;
time_t now;
- char end;
+ int n;
now = time(NULL);
nowtm = *localtime(&now);
- if (sscanf(arg, "%u-%u-%u%c", &year, &month, &day, &end) == 3) {
+ if (sscanf(arg, "%u-%u-%u%n", &year, &month, &day, &n) == 3 && !arg[n]) {
tm = startofday(nowtm);
tm.tm_year = year - 1900;
tm.tm_mon = month - 1;
@@ -261,7 +261,7 @@ hmd_date_parse_daydate_iso8601(struct hmd_date *date, char *arg)
err = tm2time(&date->ts, tm);
if (err) return err;
date->spn = HMD_DAY_SPN;
- } else if (sscanf(arg, "%u-%u%c", &year, &month, &end) == 2) {
+ } else if (sscanf(arg, "%u-%u%n", &year, &month, &n) == 2 && !arg[n]) {
tm = startofday(nowtm);
tm.tm_year = year - 1900;
tm.tm_mon = month - 1;
@@ -272,7 +272,7 @@ hmd_date_parse_daydate_iso8601(struct hmd_date *date, char *arg)
err = tm2time(&next, tm);
if (err) return err;
date->spn = next - date->ts;
- } else if (sscanf(arg, "%u%c", &year, &end) == 1) {
+ } else if (sscanf(arg, "%uY%n", &year, &n) == 1 && !arg[n]) {
tm = startofday(nowtm);
tm.tm_year = year - 1900;
tm.tm_mon = 0;