summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhang Yanfei <zhangyanfei@cn.fujitsu.com>2013-03-25 23:05:49 +0800
committerSimon Horman <horms@verge.net.au>2013-03-27 21:35:56 +0900
commit40a58f38fd23b2c96c5b0564d09c61ec6ff41a99 (patch)
tree120af37b16463986a0c856459930a49e5754d1e6
parent3a33a6089b2434aafb1ea1894bd342b507faab9d (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.c8
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;