diff options
author | Zhang Yanfei <zhangyanfei@cn.fujitsu.com> | 2013-03-25 23:05:49 +0800 |
---|---|---|
committer | Simon Horman <horms@verge.net.au> | 2013-03-27 21:35:56 +0900 |
commit | 40a58f38fd23b2c96c5b0564d09c61ec6ff41a99 (patch) | |
tree | 120af37b16463986a0c856459930a49e5754d1e6 | |
parent | 3a33a6089b2434aafb1ea1894bd342b507faab9d (diff) |
kexec: i386: bzImage: fix memory leak caused by get_command_line
Since get_command_line returns dynamically allocated memory, it is
easy for the caller to forget freeing the memory. Here fixes a
memory leak caused by this function.
Signed-off-by: Zhang Yanfei <zhangyanfei@cn.fujitsu.com>
Signed-off-by: Simon Horman <horms@verge.net.au>
-rw-r--r-- | kexec/arch/i386/kexec-bzImage.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/kexec/arch/i386/kexec-bzImage.c b/kexec/arch/i386/kexec-bzImage.c index 99fd790..39452a4 100644 --- a/kexec/arch/i386/kexec-bzImage.c +++ b/kexec/arch/i386/kexec-bzImage.c @@ -382,6 +382,7 @@ int bzImage_load(int argc, char **argv, const char *buf, off_t len, struct kexec_info *info) { char *command_line = NULL; + char *tmp_cmdline = NULL; const char *ramdisk, *append = NULL; char *ramdisk_buf; off_t ramdisk_length; @@ -421,7 +422,7 @@ int bzImage_load(int argc, char **argv, const char *buf, off_t len, append = optarg; break; case OPT_REUSE_CMDLINE: - command_line = get_command_line(); + tmp_cmdline = get_command_line(); break; case OPT_RAMDISK: ramdisk = optarg; @@ -431,7 +432,10 @@ int bzImage_load(int argc, char **argv, const char *buf, off_t len, break; } } - command_line = concat_cmdline(command_line, append); + command_line = concat_cmdline(tmp_cmdline, append); + if (tmp_cmdline) { + free(tmp_cmdline); + } command_line_len = 0; if (command_line) { command_line_len = strlen(command_line) +1; |