From: Josh Law <objecting@objecting.org>
To: Masami Hiramatsu <mhiramat@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>
Cc: linux-trace-kernel@vger.kernel.org, linux-kernel@vger.kernel.org,
Josh Law <objecting@objecting.org>
Subject: [PATCH 15/15] lib/bootconfig: return empty string instead of NULL from xbc_node_get_data()
Date: Sat, 14 Mar 2026 21:45:55 +0000 [thread overview]
Message-ID: <20260314214555.96217-16-objecting@objecting.org> (raw)
In-Reply-To: <20260314214555.96217-1-objecting@objecting.org>
xbc_node_get_data() uses WARN_ON (non-fatal) when it detects an
invalid data offset, but returns NULL. Multiple callers pass the
result directly to strlen() or strcmp() without NULL checks, which
would cause a NULL pointer dereference after the non-fatal warning:
- xbc_node_match_prefix(): strlen(p) on line 197
- find_match_node(): strcmp(xbc_node_get_data(node), k) on line 644
- xbc_verify_tree(): strlen(xbc_node_get_data(n)) on lines 832, 853
- xbc_node_find_next_key_value(): returns NULL to caller on line 404
Return an empty string instead so the WARN_ON remains non-fatal as
intended. The warning backtrace still signals corruption, but the
kernel won't crash in the callers.
Signed-off-by: Josh Law <objecting@objecting.org>
---
lib/bootconfig.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/bootconfig.c b/lib/bootconfig.c
index 0823491221f4..fae4e6790f34 100644
--- a/lib/bootconfig.c
+++ b/lib/bootconfig.c
@@ -179,14 +179,14 @@ struct xbc_node * __init xbc_node_get_next(struct xbc_node *node)
* @node: An XBC node.
*
* Return the data (which is always a null terminated string) of @node.
- * If the node has invalid data, warn and return NULL.
+ * If the node has invalid data, warn and return an empty string.
*/
const char * __init xbc_node_get_data(struct xbc_node *node)
{
int offset = node->data & ~XBC_VALUE;
if (WARN_ON(offset >= xbc_data_size))
- return NULL;
+ return "";
return xbc_data + offset;
}
--
2.34.1
prev parent reply other threads:[~2026-03-14 21:46 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-14 21:45 [PATCH 00/15] bootconfig: fixes, cleanups, and modernization Josh Law
2026-03-14 21:45 ` [PATCH 01/15] lib/bootconfig: add missing __init annotations to static helpers Josh Law
2026-03-14 21:45 ` [PATCH 02/15] lib/bootconfig: fix typo "initiized" in xbc_root_node() kerneldoc Josh Law
2026-03-14 21:45 ` [PATCH 03/15] lib/bootconfig: fix typo "uder" in xbc_node_find_next_leaf() Josh Law
2026-03-14 21:45 ` [PATCH 04/15] lib/bootconfig: add blank line before xbc_get_info() kerneldoc Josh Law
2026-03-14 21:45 ` [PATCH 05/15] lib/bootconfig: fix inconsistent if/else bracing Josh Law
2026-03-14 21:45 ` [PATCH 06/15] lib/bootconfig: narrow flag parameter type from uint32_t to uint16_t Josh Law
2026-03-14 21:45 ` [PATCH 07/15] lib/bootconfig: fix inconsistent if/else bracing in __xbc_add_key() Josh Law
2026-03-14 21:45 ` [PATCH 08/15] lib/bootconfig: fix off-by-one in xbc_verify_tree() next node check Josh Law
2026-03-14 21:45 ` [PATCH 09/15] lib/bootconfig: increment xbc_node_num after node init succeeds Josh Law
2026-03-14 21:45 ` [PATCH 10/15] lib/bootconfig: drop redundant memset of xbc_nodes Josh Law
2026-03-14 21:45 ` [PATCH 11/15] bootconfig: use __packed macro for struct xbc_node Josh Law
2026-03-14 21:45 ` [PATCH 12/15] bootconfig: constify xbc_calc_checksum() data parameter Josh Law
2026-03-14 21:45 ` [PATCH 13/15] lib/bootconfig: replace linux/kernel.h with specific includes Josh Law
2026-03-14 21:45 ` [PATCH 14/15] bootconfig: add __packed definition to tools/bootconfig shim header Josh Law
2026-03-14 21:45 ` Josh Law [this message]
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=20260314214555.96217-16-objecting@objecting.org \
--to=objecting@objecting.org \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=mhiramat@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.