dump: Fix writing of ELF section
authorPeter Maydell <peter.maydell@linaro.org>
Tue, 24 Mar 2020 17:36:30 +0000 (17:36 +0000)
committerPeter Maydell <peter.maydell@linaro.org>
Fri, 3 Apr 2020 18:26:41 +0000 (19:26 +0100)
In write_elf_section() we set the 'shdr' pointer to point to local
structures shdr32 or shdr64, which we fill in to be written out to
the ELF dump.  Unfortunately the address we pass to fd_write_vmcore()
has a spurious '&' operator, so instead of writing out the section
header we write out the literal pointer value followed by whatever is
on the stack after the 'shdr' local variable.

Pass the correct address into fd_write_vmcore().

Spotted by Coverity: CID 1421970.

Cc: qemu-stable@nongnu.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-id: 20200324173630.12221-1-peter.maydell@linaro.org

dump/dump.c

index 6fb6e1245adafeadee8447e743c492e71a5d3ba6..22ed1d3b0d42f5a2f0e29c8ead85a3ea13eaf549 100644 (file)
@@ -364,7 +364,7 @@ static void write_elf_section(DumpState *s, int type, Error **errp)
         shdr = &shdr64;
     }
 
-    ret = fd_write_vmcore(&shdr, shdr_size, s);
+    ret = fd_write_vmcore(shdr, shdr_size, s);
     if (ret < 0) {
         error_setg_errno(errp, -ret,
                          "dump: failed to write section header table");