]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
meta: don't use non-POSIX formats in strptime()
authorJo-Philipp Wich <jo@mein.io>
Mon, 8 Aug 2022 22:18:42 +0000 (00:18 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Tue, 9 Aug 2022 08:51:43 +0000 (10:51 +0200)
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 <jo@mein.io>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/meta.c

index 80ace25b8c97b4ecb453e8cd301f71871ccdf1f3..257bbc9fe97b6746f02d12508835e0873dd73984 100644 (file)
@@ -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;