From: Florian Westphal Date: Mon, 4 May 2026 11:59:02 +0000 (+0200) Subject: src: don't write to possible rodata location X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6e6a668d201dd311bb0ca0fac7a83e853abb5293;p=thirdparty%2Fnftables.git src: don't write to possible rodata location seen with gcc-16.0.1: src/libnftables.c: In function 'nft_ctx_add_var': src/libnftables.c:153:27: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers] 153 | char *separator = strchr(var, '='); function arg says "const char *", write to this memory is not expected. Signed-off-by: Florian Westphal --- diff --git a/src/libnftables.c b/src/libnftables.c index bc42c32d..db9ee388 100644 --- a/src/libnftables.c +++ b/src/libnftables.c @@ -150,21 +150,27 @@ static void nft_exit(struct nft_ctx *ctx) EXPORT_SYMBOL(nft_ctx_add_var); int nft_ctx_add_var(struct nft_ctx *ctx, const char *var) { - char *separator = strchr(var, '='); + const char *separator = strchr(var, '='); int pcount = ctx->num_vars; struct nft_vars *tmp; const char *value; + size_t len; + char *key; if (!separator) return -1; tmp = xrealloc(ctx->vars, (pcount + 1) * sizeof(struct nft_vars)); - *separator = '\0'; value = separator + 1; + len = separator - var; + + key = xmalloc(len + 1); + memcpy(key, var, len); + key[len] = '\0'; ctx->vars = tmp; - ctx->vars[pcount].key = xstrdup(var); + ctx->vars[pcount].key = key; ctx->vars[pcount].value = xstrdup(value); ctx->num_vars++;