diff options
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/kconfig/symbol.c | 4 | ||||
-rw-r--r-- | scripts/kconfig/zconf.y | 1 |
2 files changed, 5 insertions, 0 deletions
diff --git a/scripts/kconfig/symbol.c b/scripts/kconfig/symbol.c index 35e0937aa6a6..55c95e0bb48a 100644 --- a/scripts/kconfig/symbol.c +++ b/scripts/kconfig/symbol.c @@ -907,6 +907,10 @@ const char *sym_expand_string_value(const char *in) char *res; size_t reslen; + /* + * Note: 'in' might come from a token that's about to be + * freed, so make sure to always allocate a new string + */ reslen = strlen(in) + 1; res = xmalloc(reslen); res[0] = '\0'; diff --git a/scripts/kconfig/zconf.y b/scripts/kconfig/zconf.y index 616405b43e63..1c6d33bc9702 100644 --- a/scripts/kconfig/zconf.y +++ b/scripts/kconfig/zconf.y @@ -393,6 +393,7 @@ source_stmt: T_SOURCE prompt T_EOL { printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), $2); zconf_nextfile($2); + free($2); }; /* comment entry */ |