linux-user/elfload: Avoid leaking interp_name using GLib memory API
Fix an unlikely memory leak in load_elf_image().
Fixes: bf858897b7
("linux-user: Re-use load_elf_image for the main binary.")
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20201021173749.111103-5-richard.henderson@linaro.org
Message-Id: <20201003174944.1972444-1-f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
069175bfd8
commit
2b323087b5
@ -2584,13 +2584,13 @@ static void load_elf_image(const char *image_name, int image_fd,
|
||||
info->brk = vaddr_em;
|
||||
}
|
||||
} else if (eppnt->p_type == PT_INTERP && pinterp_name) {
|
||||
char *interp_name;
|
||||
g_autofree char *interp_name = NULL;
|
||||
|
||||
if (*pinterp_name) {
|
||||
errmsg = "Multiple PT_INTERP entries";
|
||||
goto exit_errmsg;
|
||||
}
|
||||
interp_name = malloc(eppnt->p_filesz);
|
||||
interp_name = g_malloc(eppnt->p_filesz);
|
||||
if (!interp_name) {
|
||||
goto exit_perror;
|
||||
}
|
||||
@ -2609,7 +2609,7 @@ static void load_elf_image(const char *image_name, int image_fd,
|
||||
errmsg = "Invalid PT_INTERP entry";
|
||||
goto exit_errmsg;
|
||||
}
|
||||
*pinterp_name = interp_name;
|
||||
*pinterp_name = g_steal_pointer(&interp_name);
|
||||
#ifdef TARGET_MIPS
|
||||
} else if (eppnt->p_type == PT_MIPS_ABIFLAGS) {
|
||||
Mips_elf_abiflags_v0 abiflags;
|
||||
@ -2961,7 +2961,7 @@ int load_elf_binary(struct linux_binprm *bprm, struct image_info *info)
|
||||
if (elf_interpreter) {
|
||||
info->load_bias = interp_info.load_bias;
|
||||
info->entry = interp_info.entry;
|
||||
free(elf_interpreter);
|
||||
g_free(elf_interpreter);
|
||||
}
|
||||
|
||||
#ifdef USE_ELF_CORE_DUMP
|
||||
|
Loading…
Reference in New Issue
Block a user