summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--binutils/ChangeLog7
-rw-r--r--binutils/readelf.c5
2 files changed, 10 insertions, 2 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index a7ee38aca8..304da8317d 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,10 @@
+2012-01-26 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/13622
+ * readelf.c (process_section_groups): If there are no section
+ headers do not scan for section groups.
+ (process_note_sections): Likewise for note sections.
+
2012-01-20 Tristan Gingold <gingold@adacore.com>
* od-macho.c (OPT_SEG_SPLIT_INFO): New macro.
diff --git a/binutils/readelf.c b/binutils/readelf.c
index 502c76e1f1..861b2c1662 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -4961,7 +4961,8 @@ process_section_groups (FILE * file)
if (section_headers == NULL)
{
error (_("Section headers are not available!\n"));
- abort ();
+ /* PR 13622: This can happen with a corrupt ELF header. */
+ return 0;
}
section_headers_groups = (struct group **) calloc (elf_header.e_shnum,
@@ -13070,7 +13071,7 @@ process_note_sections (FILE * file)
int res = 1;
for (i = 0, section = section_headers;
- i < elf_header.e_shnum;
+ i < elf_header.e_shnum && section != NULL;
i++, section++)
if (section->sh_type == SHT_NOTE)
res &= process_corefile_note_segment (file,