]> Git Repo - qemu.git/commitdiff
linux-user: Sanitize interp_info and, for mips only, init field fp_abi
authorDaniel Santos <[email protected]>
Sun, 19 May 2019 16:15:26 +0000 (18:15 +0200)
committerLaurent Vivier <[email protected]>
Wed, 22 May 2019 18:50:55 +0000 (20:50 +0200)
Sanitize interp_info structure in load_elf_binary() and, for MIPS only,
init its field fp_abi to MIPS_ABI_FP_UNKNOWN. This fixes appearances of
"Unexpected FPU mode" message in some MIPS use cases. Currently, this
bug is a complete stopper for some MIPS binaries.

In load_elf_binary(), struct image_info interp_info is used without
being properly initialized. One result is that when the ELF's program
header doesn't contain an entry for the ABI flags, then the value of
the struct image_info's fp_abi field is set to whatever happened to
be in stack memory at the time.

Backporting to 4.0 and, if possible, to 3.1 is recommended.

Fixes: https://bugs.launchpad.net/qemu/+bug/1825002
Signed-off-by: Daniel Santos <[email protected]>
Signed-off-by: Aleksandar Markovic <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Reviewed-by: Laurent Vivier <[email protected]>
Message-Id: <1558282527[email protected]>
Signed-off-by: Laurent Vivier <[email protected]>
linux-user/elfload.c

index ef42e02d823384fc08a6dfdefd5b270b7a465b70..02832adfbc0c7d7a99287d304dafdef02d44fd8c 100644 (file)
@@ -2706,6 +2706,11 @@ int load_elf_binary(struct linux_binprm *bprm, struct image_info *info)
     char *elf_interpreter = NULL;
     char *scratch;
 
+    memset(&interp_info, 0, sizeof(interp_info));
+#ifdef TARGET_MIPS
+    interp_info.fp_abi = MIPS_ABI_FP_UNKNOWN;
+#endif
+
     info->start_mmap = (abi_ulong)ELF_START_MMAP;
 
     load_elf_image(bprm->filename, bprm->fd, info,
This page took 0.029372 seconds and 4 git commands to generate.