>From 82be343a388a02477ffb0d464e1f2810c61a1fda Mon Sep 17 00:00:00 2001 From: Andrej Gelenberg Date: Sun, 10 Jul 2011 03:44:50 +0200 Subject: [PATCH] nconfig: prevent segfault on empty menu how to reproduce: 1. $ make nconfig 2. disable "Kernel hacking -> Debug Filesystem" 3. go to "General setup -> GCOV-based kernel profiling" and hit F2 it should segfault Fix: i have added some checks for "struct menu*" to be NULL bevor it get dereferenced Signed-off-by: Andrej Gelenberg --- scripts/kconfig/menu.c | 18 ++++++++++-------- 1 files changed, 10 insertions(+), 8 deletions(-) diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c index 5fdf10d..6a09cc4 100644 --- a/scripts/kconfig/menu.c +++ b/scripts/kconfig/menu.c @@ -425,7 +425,7 @@ void menu_finalize(struct menu *parent) bool menu_has_prompt(struct menu *menu) { - if (!menu->prompt) + if ((!menu) || (!menu->prompt)) return false; return true; } @@ -436,7 +436,7 @@ bool menu_is_visible(struct menu *menu) struct symbol *sym; tristate visible; - if (!menu->prompt) + if ((!menu) || !menu->prompt) return false; if (menu->visibility) { @@ -470,10 +470,12 @@ bool menu_is_visible(struct menu *menu) const char *menu_get_prompt(struct menu *menu) { - if (menu->prompt) - return menu->prompt->text; - else if (menu->sym) - return menu->sym->name; + if (menu) { + if (menu->prompt) + return menu->prompt->text; + else if (menu->sym) + return menu->sym->name; + } return NULL; } @@ -496,12 +498,12 @@ struct menu *menu_get_parent_menu(struct menu *menu) bool menu_has_help(struct menu *menu) { - return menu->help != NULL; + return menu && (menu->help != NULL); } const char *menu_get_help(struct menu *menu) { - if (menu->help) + if (menu && menu->help) return menu->help; else return ""; -- 1.7.6