PR25046, readelf "Reading xxx bytes extends past end of file for dynamic section"
Alan Modra
amodra@gmail.com
Mon Sep 30 04:51:00 GMT 2019
process_object does
if (process_program_headers (filedata))
process_dynamic_section (filedata);
but process_program_headers can return true before clearing globals
used by process_dynamic_section, leaving stale data from a previous
file.
PR 25046
* readelf.c (process_program_headers): Clear dynamic_addr and
dynamic_size earlier.
diff --git a/binutils/readelf.c b/binutils/readelf.c
index cc168163b2..0962877ad8 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -5101,6 +5101,9 @@ process_program_headers (Filedata * filedata)
unsigned int i;
Elf_Internal_Phdr * previous_load = NULL;
+ dynamic_addr = 0;
+ dynamic_size = 0;
+
if (filedata->file_header.e_phnum == 0)
{
/* PR binutils/12467. */
@@ -5151,9 +5154,6 @@ process_program_headers (Filedata * filedata)
}
}
- dynamic_addr = 0;
- dynamic_size = 0;
-
for (i = 0, segment = filedata->program_headers;
i < filedata->file_header.e_phnum;
i++, segment++)
--
Alan Modra
Australia Development Lab, IBM
More information about the Binutils
mailing list