]> xenbits.xensource.com Git - qemu-xen.git/commitdiff
elf2dmp: Fail cleanly if PDB file specifies zero block_size
authorPeter Maydell <peter.maydell@linaro.org>
Mon, 20 Sep 2021 08:54:32 +0000 (09:54 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Mon, 20 Sep 2021 08:54:32 +0000 (09:54 +0100)
Coverity points out that if the PDB file we're trying to read
has a header specifying a block_size of zero then we will
end up trying to divide by zero in pdb_ds_read_file().
Check for this and fail cleanly instead.

Fixes: Coverity CID 1458869
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Viktor Prutyanov <viktor.prutyanov@phystech.edu>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Viktor Prutyanov <viktor.prutyanov@phystech.edu>
Message-id: 20210910170656.366592-3-philmd@redhat.com
Message-Id: <20210901143910.17112-3-peter.maydell@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
contrib/elf2dmp/pdb.c

index b3a65470680d9bedbb175b58c8649c190e1308f0..adcfa7e154c3c416a24b1f8f6600bc90e6293b36 100644 (file)
@@ -215,6 +215,10 @@ out_symbols:
 
 static int pdb_reader_ds_init(struct pdb_reader *r, PDB_DS_HEADER *hdr)
 {
+    if (hdr->block_size == 0) {
+        return 1;
+    }
+
     memset(r->file_used, 0, sizeof(r->file_used));
     r->ds.header = hdr;
     r->ds.toc = pdb_ds_read(hdr, (uint32_t *)((uint8_t *)hdr +