From: Jo-Philipp Wich Date: Mon, 8 Aug 2022 22:18:42 +0000 (+0200) Subject: meta: don't use non-POSIX formats in strptime() X-Git-Tag: v1.0.5~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=180ce4d7da785d93ce2b070a2b45b82088d09c10;p=thirdparty%2Fnftables.git meta: don't use non-POSIX formats in strptime() The current strptime() invocations in meta.c use the `%F` format which is not specified by POSIX and thus unimplemented by some libc flavors such as musl libc. Replace all occurrences of `%F` with an equivalent `%Y-%m-%d` format in order to be able to properly parse user supplied dates in such environments. Signed-off-by: Jo-Philipp Wich Signed-off-by: Pablo Neira Ayuso --- diff --git a/src/meta.c b/src/meta.c index 80ace25b..257bbc9f 100644 --- a/src/meta.c +++ b/src/meta.c @@ -399,7 +399,7 @@ static void date_type_print(const struct expr *expr, struct output_ctx *octx) tstamp += cur_tm->tm_gmtoff; if ((tm = gmtime((time_t *) &tstamp)) != NULL && - strftime(timestr, sizeof(timestr) - 1, "%F %T", tm)) + strftime(timestr, sizeof(timestr) - 1, "%Y-%m-%d %T", tm)) nft_print(octx, "\"%s\"", timestr); else nft_print(octx, "Error converting timestamp to printed time"); @@ -412,11 +412,11 @@ static bool parse_iso_date(uint64_t *tstamp, const char *sym) memset(&tm, 0, sizeof(struct tm)); - if (strptime(sym, "%F %T", &tm)) + if (strptime(sym, "%Y-%m-%d %T", &tm)) goto success; - if (strptime(sym, "%F %R", &tm)) + if (strptime(sym, "%Y-%m-%d %R", &tm)) goto success; - if (strptime(sym, "%F", &tm)) + if (strptime(sym, "%Y-%m-%d", &tm)) goto success; return false;