From: Anton Moryakov <ant.v.morya...@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.morya...@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