mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-21 02:24:17 +08:00
readelf: DO not load section headers from file offset zero
* readelf.c (get_32bit_section_headers): Return false if the e_shoff field is zero. (get_64bit_section_headers): Likewise.
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
2022-10-03 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
* readelf.c (get_32bit_section_headers): Return false if the
|
||||||
|
e_shoff field is zero.
|
||||||
|
(get_64bit_section_headers): Likewise.
|
||||||
|
|
||||||
2022-09-28 Nick Clifton <nickc@redhat.com>
|
2022-09-28 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
PR 29628
|
PR 29628
|
||||||
|
@ -6365,6 +6365,13 @@ get_32bit_section_headers (Filedata * filedata, bool probe)
|
|||||||
/* PR binutils/17531: Cope with unexpected section header sizes. */
|
/* PR binutils/17531: Cope with unexpected section header sizes. */
|
||||||
if (size == 0 || num == 0)
|
if (size == 0 || num == 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
/* The section header cannot be at the start of the file - that is
|
||||||
|
where the ELF file header is located. A file with absolutely no
|
||||||
|
sections in it will use a shoff of 0. */
|
||||||
|
if (filedata->file_header.e_shoff == 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
if (size < sizeof * shdrs)
|
if (size < sizeof * shdrs)
|
||||||
{
|
{
|
||||||
if (! probe)
|
if (! probe)
|
||||||
@ -6429,6 +6436,12 @@ get_64bit_section_headers (Filedata * filedata, bool probe)
|
|||||||
if (size == 0 || num == 0)
|
if (size == 0 || num == 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
/* The section header cannot be at the start of the file - that is
|
||||||
|
where the ELF file header is located. A file with absolutely no
|
||||||
|
sections in it will use a shoff of 0. */
|
||||||
|
if (filedata->file_header.e_shoff == 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
if (size < sizeof * shdrs)
|
if (size < sizeof * shdrs)
|
||||||
{
|
{
|
||||||
if (! probe)
|
if (! probe)
|
||||||
|
Reference in New Issue
Block a user