Commit bc28fe1d authored by Ulf Magnusson's avatar Ulf Magnusson Committed by Masahiro Yamada

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: default avatarUlf Magnusson <ulfalizer@gmail.com>
Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
parent 24161a67
...@@ -236,8 +236,10 @@ symbol_option_list: ...@@ -236,8 +236,10 @@ symbol_option_list:
| symbol_option_list T_WORD symbol_option_arg | symbol_option_list T_WORD symbol_option_arg
{ {
const struct kconf_id *id = kconf_id_lookup($2, strlen($2)); 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); menu_add_option(id->token, $3);
free($3);
}
else else
zconfprint("warning: ignoring unknown option %s", $2); zconfprint("warning: ignoring unknown option %s", $2);
free($2); free($2);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment