summaryrefslogtreecommitdiffstats
path: root/scripts/kconfig/zconf.y
diff options
context:
space:
mode:
authorUlf Magnusson <ulfalizer@gmail.com>2017-10-08 19:11:20 +0200
committerMasahiro Yamada <yamada.masahiro@socionext.com>2018-01-11 01:14:01 +0900
commitbc28fe1d5ede887312a329d06ac7ba1ba51d0d85 (patch)
tree37418a17415ff2637009d982fe9a59130c408200 /scripts/kconfig/zconf.y
parent24161a6711c94598fdebb0aac1301881ada47908 (diff)
downloadlinux-bc28fe1d5ede887312a329d06ac7ba1ba51d0d85.tar.gz
linux-bc28fe1d5ede887312a329d06ac7ba1ba51d0d85.tar.bz2
linux-bc28fe1d5ede887312a329d06ac7ba1ba51d0d85.zip
kconfig: Don't leak 'option' arguments during parsing
The following strings would leak before this change: - option env="LEAKED" - option defconfig_list="LEAKED" These come in the form of T_WORD tokens and are always allocated on the heap in zconf.l. Free them. Summary from Valgrind on 'menuconfig' (ARCH=x86) before the fix: LEAK SUMMARY: definitely lost: 344,616 bytes in 14,355 blocks ... Summary after the fix: LEAK SUMMARY: definitely lost: 344,568 bytes in 14,352 blocks ... Signed-off-by: Ulf Magnusson <ulfalizer@gmail.com> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Diffstat (limited to 'scripts/kconfig/zconf.y')
-rw-r--r--scripts/kconfig/zconf.y4
1 files changed, 3 insertions, 1 deletions
diff --git a/scripts/kconfig/zconf.y b/scripts/kconfig/zconf.y
index 1c6d33bc9702..df9cb12111e4 100644
--- a/scripts/kconfig/zconf.y
+++ b/scripts/kconfig/zconf.y
@@ -236,8 +236,10 @@ symbol_option_list:
| symbol_option_list T_WORD symbol_option_arg
{
const struct kconf_id *id = kconf_id_lookup($2, strlen($2));
- if (id && id->flags & TF_OPTION)
+ if (id && id->flags & TF_OPTION) {
menu_add_option(id->token, $3);
+ free($3);
+ }
else
zconfprint("warning: ignoring unknown option %s", $2);
free($2);