nftables: fix parsing date expressions
Musl libc does not support the non-POSIX "%F" format for strptime() so replace all occurrences of it with an equivalent "%Y-%m-%d" format. Fixes: #10419 Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
		| @@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk | |||||||
|  |  | ||||||
| PKG_NAME:=nftables | PKG_NAME:=nftables | ||||||
| PKG_VERSION:=1.0.4 | PKG_VERSION:=1.0.4 | ||||||
| PKG_RELEASE:=1 | PKG_RELEASE:=2 | ||||||
|  |  | ||||||
| PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 | PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 | ||||||
| PKG_SOURCE_URL:=https://netfilter.org/projects/$(PKG_NAME)/files | PKG_SOURCE_URL:=https://netfilter.org/projects/$(PKG_NAME)/files | ||||||
|   | |||||||
| @@ -0,0 +1,49 @@ | |||||||
|  | From 1af8aabccd65e11caa397c4706353075f623cd01 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Jo-Philipp Wich <jo@mein.io> | ||||||
|  | Date: Mon, 8 Aug 2022 23:57:03 +0200 | ||||||
|  | Subject: [PATCH] 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 <jo@mein.io> | ||||||
|  | --- | ||||||
|  |  src/meta.c | 8 ++++---- | ||||||
|  |  1 file changed, 4 insertions(+), 4 deletions(-) | ||||||
|  |  | ||||||
|  | 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; | ||||||
|  | --  | ||||||
|  | 2.35.1 | ||||||
|  |  | ||||||
| @@ -25,7 +25,6 @@ CONFIG_CPU_HAS_PREFETCH=y | |||||||
| CONFIG_CPU_HAS_RIXI=y | CONFIG_CPU_HAS_RIXI=y | ||||||
| CONFIG_CPU_HAS_SYNC=y | CONFIG_CPU_HAS_SYNC=y | ||||||
| CONFIG_CPU_IDLE=y | CONFIG_CPU_IDLE=y | ||||||
| # CONFIG_CPU_IDLE_GOV_LADDER is not set |  | ||||||
| CONFIG_CPU_IDLE_GOV_TEO=y | CONFIG_CPU_IDLE_GOV_TEO=y | ||||||
| CONFIG_CPU_MIPS32=y | CONFIG_CPU_MIPS32=y | ||||||
| # CONFIG_CPU_MIPS32_R1 is not set | # CONFIG_CPU_MIPS32_R1 is not set | ||||||
| @@ -41,7 +40,6 @@ CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y | |||||||
| CONFIG_CPU_SUPPORTS_HIGHMEM=y | CONFIG_CPU_SUPPORTS_HIGHMEM=y | ||||||
| CONFIG_CPU_SUPPORTS_MSA=y | CONFIG_CPU_SUPPORTS_MSA=y | ||||||
| CONFIG_CRC16=y | CONFIG_CRC16=y | ||||||
| CONFIG_CRYPTO_ACOMP2=y |  | ||||||
| CONFIG_CRYPTO_BLAKE2S=y | CONFIG_CRYPTO_BLAKE2S=y | ||||||
| CONFIG_CRYPTO_DEFLATE=y | CONFIG_CRYPTO_DEFLATE=y | ||||||
| CONFIG_CRYPTO_HASH_INFO=y | CONFIG_CRYPTO_HASH_INFO=y | ||||||
| @@ -108,7 +106,6 @@ CONFIG_IRQ_DOMAIN_HIERARCHY=y | |||||||
| CONFIG_IRQ_FORCED_THREADING=y | CONFIG_IRQ_FORCED_THREADING=y | ||||||
| CONFIG_IRQ_MIPS_CPU=y | CONFIG_IRQ_MIPS_CPU=y | ||||||
| CONFIG_IRQ_WORK=y | CONFIG_IRQ_WORK=y | ||||||
| # CONFIG_KERNEL_ZSTD is not set |  | ||||||
| CONFIG_LED_TRIGGER_PHY=y | CONFIG_LED_TRIGGER_PHY=y | ||||||
| CONFIG_LIBFDT=y | CONFIG_LIBFDT=y | ||||||
| CONFIG_LOCK_DEBUGGING_SUPPORT=y | CONFIG_LOCK_DEBUGGING_SUPPORT=y | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Jo-Philipp Wich
					Jo-Philipp Wich