diff mbox series

[v2,2/2] elf2dmp: Fail cleanly if PDB file specifies zero block_size

Message ID 20210910170656.366592-3-philmd@redhat.com
State New
Headers show
Series [v2,1/2] elf2dmp: Check curl_easy_setopt() return value | expand

Commit Message

Philippe Mathieu-Daudé Sept. 10, 2021, 5:06 p.m. UTC
From: Peter Maydell <peter.maydell@linaro.org>


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>

Message-Id: <20210901143910.17112-3-peter.maydell@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>

---
Informal T-b tag on
https://lore.kernel.org/qemu-devel/20210909004313.1dadb24e@192.168.1.7/
Tested-by: Viktor Prutyanov <viktor.prutyanov@phystech.edu>

---
 contrib/elf2dmp/pdb.c | 4 ++++
 1 file changed, 4 insertions(+)

-- 
2.31.1

Comments

Viktor Prutyanov Sept. 10, 2021, 5:13 p.m. UTC | #1
Hi,

On Fri, 10 Sep 2021 19:06:56 +0200
Philippe Mathieu-Daudé <philmd@redhat.com> wrote:

> From: Peter Maydell <peter.maydell@linaro.org>

> 

> 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>

> Message-Id: <20210901143910.17112-3-peter.maydell@linaro.org>

> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>

> ---

> Informal T-b tag on

> https://lore.kernel.org/qemu-devel/20210909004313.1dadb24e@192.168.1.7/

> Tested-by: Viktor Prutyanov <viktor.prutyanov@phystech.edu>

> ---

>  contrib/elf2dmp/pdb.c | 4 ++++

>  1 file changed, 4 insertions(+)

> 

> diff --git a/contrib/elf2dmp/pdb.c b/contrib/elf2dmp/pdb.c

> index b3a65470680..adcfa7e154c 100644

> --- a/contrib/elf2dmp/pdb.c

> +++ b/contrib/elf2dmp/pdb.c

> @@ -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 +


Tested-by: Viktor Prutyanov <viktor.prutyanov@phystech.edu>


-- 
Viktor Prutyanov
diff mbox series

Patch

diff --git a/contrib/elf2dmp/pdb.c b/contrib/elf2dmp/pdb.c
index b3a65470680..adcfa7e154c 100644
--- a/contrib/elf2dmp/pdb.c
+++ b/contrib/elf2dmp/pdb.c
@@ -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 +