diff options
author | Sam Ravnborg <sam@ravnborg.org> | 2007-09-19 21:23:09 +0200 |
---|---|---|
committer | Sam Ravnborg <sam@neptun.(none)> | 2007-10-12 21:15:32 +0200 |
commit | a67cb1319f53fa68012a23d6ca45279c6bc627f8 (patch) | |
tree | 36a9ca55dd8180ca3583d4dbd22ed8c72fb1f04a | |
parent | 48874077ddd6c0c444758059af2cf77c10204ece (diff) | |
download | linux-a67cb1319f53fa68012a23d6ca45279c6bc627f8.tar.gz linux-a67cb1319f53fa68012a23d6ca45279c6bc627f8.tar.bz2 linux-a67cb1319f53fa68012a23d6ca45279c6bc627f8.zip |
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" <miles.lane@gmail.com> for inital reporting
and to Gabriel C <nix.or.die@googlemail.com> for the backtrace
that helped me locating the bug.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
-rw-r--r-- | scripts/kconfig/mconf.c | 5 | ||||
-rw-r--r-- | scripts/kconfig/util.c | 13 |
2 files changed, 11 insertions, 7 deletions
diff --git a/scripts/kconfig/mconf.c b/scripts/kconfig/mconf.c index 2ee12a744641..1935818040e2 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 e3f28b9d59f4..e1cad924c0a4 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 */ |