From: Sam Ravnborg Date: Wed, 19 Sep 2007 19:23:09 +0000 (+0200) Subject: kconfig: fix segv fault in menuconfig X-Git-Tag: v2.6.24-rc1~830^2~22 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a67cb1319f53fa68012a23d6ca45279c6bc627f8;p=linux-2.6 kconfig: fix segv fault in menuconfig With specific configurations requesting help for certain menu lines caused menuconfig to crash. This was tracked down to a null pointer bug. Thanks to "Miles Lane" for inital reporting and to Gabriel C for the backtrace that helped me locating the bug. Signed-off-by: Sam Ravnborg --- diff --git a/scripts/kconfig/mconf.c b/scripts/kconfig/mconf.c index 2ee12a7446..1935818040 100644 --- a/scripts/kconfig/mconf.c +++ b/scripts/kconfig/mconf.c @@ -357,8 +357,9 @@ static void get_symbol_str(struct gstr *r, struct symbol *sym) bool hit; struct property *prop; - str_printf(r, "Symbol: %s [=%s]\n", sym->name, - sym_get_string_value(sym)); + if (sym && sym->name) + str_printf(r, "Symbol: %s [=%s]\n", sym->name, + sym_get_string_value(sym)); for_all_prompts(sym, prop) get_prompt_str(r, prop); hit = false; diff --git a/scripts/kconfig/util.c b/scripts/kconfig/util.c index e3f28b9d59..e1cad924c0 100644 --- a/scripts/kconfig/util.c +++ b/scripts/kconfig/util.c @@ -84,12 +84,15 @@ void str_free(struct gstr *gs) /* Append to growable string */ void str_append(struct gstr *gs, const char *s) { - size_t l = strlen(gs->s) + strlen(s) + 1; - if (l > gs->len) { - gs->s = realloc(gs->s, l); - gs->len = l; + size_t l; + if (s) { + l = strlen(gs->s) + strlen(s) + 1; + if (l > gs->len) { + gs->s = realloc(gs->s, l); + gs->len = l; + } + strcat(gs->s, s); } - strcat(gs->s, s); } /* Append printf formatted string to growable string */