[PATCH] scripts: kconfig: fix deref after null in menu.c
ant.v.moryakov at gmail.com
ant.v.moryakov at gmail.com
Fri May 16 16:56:11 CEST 2025
From: Anton Moryakov <ant.v.moryakov at gmail.com>
Static analyzer detected a potential NULL pointer dereference when 'sym'
pointer is passed to for_all_prompts() and other functions after being
checked for NULL earlier in the function.
The issue could occur when called from gstr get_relations_str() with
NULL symbol pointer.
Changes made:
1. Added early return if sym is NULL or has no name
2. Added NULL checks before all sym pointer dereferences
3. Maintained existing functionality for valid symbols
Signed-off-by: Anton Moryakov <ant.v.moryakov at gmail.com>
---
scripts/kconfig/menu.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c
index 0fe7f3255af..2907f0ebfbf 100644
--- a/scripts/kconfig/menu.c
+++ b/scripts/kconfig/menu.c
@@ -796,6 +796,9 @@ static void get_symbol_str(struct gstr *r, struct symbol *sym,
{
struct property *prop;
+ if (!sym || !sym->name)
+ return;
+
if (sym && sym->name) {
str_printf(r, "Symbol: %s [=%s]\n", sym->name,
sym_get_string_value(sym));
@@ -809,7 +812,8 @@ static void get_symbol_str(struct gstr *r, struct symbol *sym,
}
}
}
- for_all_prompts(sym, prop)
+ if(sym)
+ for_all_prompts(sym, prop)
get_prompt_str(r, prop, head);
prop = get_symbol_prop(sym);
@@ -823,14 +827,16 @@ static void get_symbol_str(struct gstr *r, struct symbol *sym,
}
}
- get_symbol_props_str(r, sym, P_SELECT, " Selects: ");
+ if(sym)
+ get_symbol_props_str(r, sym, P_SELECT, " Selects: ");
if (sym->rev_dep.expr) {
expr_gstr_print_revdep(sym->rev_dep.expr, r, yes, " Selected by [y]:\n");
expr_gstr_print_revdep(sym->rev_dep.expr, r, mod, " Selected by [m]:\n");
expr_gstr_print_revdep(sym->rev_dep.expr, r, no, " Selected by [n]:\n");
}
- get_symbol_props_str(r, sym, P_IMPLY, " Implies: ");
+ if (sym)
+ get_symbol_props_str(r, sym, P_IMPLY, " Implies: ");
if (sym->implied.expr) {
expr_gstr_print_revdep(sym->implied.expr, r, yes, " Implied by [y]:\n");
expr_gstr_print_revdep(sym->implied.expr, r, mod, " Implied by [m]:\n");
--
2.30.2
More information about the U-Boot
mailing list