All of lore.kernel.org
 help / color / mirror / Atom feed
From: Florian Westphal <fw@strlen.de>
To: <netfilter-devel@vger.kernel.org>
Cc: Florian Westphal <fw@strlen.de>
Subject: [PATCH libnftnl 1/7] include: str_array.h: avoid oob read
Date: Fri, 23 Oct 2026 15:58:00 +0200	[thread overview]
Message-ID: <20261023135806.7259-2-fw@strlen.de> (raw)
In-Reply-To: <20261023135806.7259-1-fw@strlen.de>

LLM says:
The increment expression unconditionally dereferences `array[len]` *before*
the loop condition can stop it. This is UB on every call regardless of `len > 0`.
If `array == NULL` and `len == 0`, the *init* expression also segfaults.

Add extra guards.

Signed-off-by: Florian Westphal <fw@strlen.de>
---
 include/str_array.h | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/include/str_array.h b/include/str_array.h
index 98c9b4f3e6d1..cef71cf2ca63 100644
--- a/include/str_array.h
+++ b/include/str_array.h
@@ -14,9 +14,9 @@ void nftnl_str_array_clear(struct nftnl_str_array *sa);
 int nftnl_str_array_set(struct nftnl_str_array *sa, const char * const *array);
 int nftnl_parse_devs(struct nftnl_str_array *sa, const struct nlattr *nest);
 
-#define nftnl_str_array_foreach(ptr, sa, idx)	\
-	for (idx = 0, ptr = (sa)->array[idx];	\
-	     idx < (sa)->len;			\
-	     ptr = (sa)->array[++idx])
+#define nftnl_str_array_foreach(ptr, sa, idx)			\
+	for (idx = 0, ptr = (sa)->len ? (sa)->array[0] : NULL;	\
+	     idx < (sa)->len; idx++,				\
+	     ptr = (idx < (sa)->len) ? (sa)->array[idx] : NULL)
 
 #endif /* LIBNFTNL_STR_ARRAY_H */
-- 
2.55.0


  reply	other threads:[~2026-10-23 13:58 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-23 13:57 [PATCH libnftnl 0/7] misc LLM fixes Florian Westphal
2026-10-23 13:58 ` Florian Westphal [this message]
2026-10-23 13:58 ` [PATCH libnftnl 2/7] src: chain: fix NFTNL_CHAIN_TYPE data_len Florian Westphal
2026-10-23 13:58 ` [PATCH libnftnl 3/7] src: common: fix fd leak in nftnl_batch_is_supported Florian Westphal
2026-10-23 13:58 ` [PATCH libnftnl 4/7] expr: nftnl_expr_parse: use nftnl_expr_free on error unwind Florian Westphal
2026-10-23 13:58 ` [PATCH libnftnl 5/7] src: flowtable: allow to unset NFTNL_FLOWTABLE_SIZE Florian Westphal
2026-10-23 13:58 ` [PATCH libnftnl 6/7] src: utils: keep old name if strndup fails Florian Westphal
2026-10-23 13:58 ` [PATCH libnftnl 7/7] src: add and use nftnl_mem_blob for user_data Florian Westphal
2026-10-26 14:46 ` [PATCH libnftnl 0/7] misc LLM fixes Fernando Fernandez Mancera

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20261023135806.7259-2-fw@strlen.de \
    --to=fw@strlen.de \
    --cc=netfilter-devel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.