Upstream-Status: Backport

From dcf0cb6bb406708020efe2db44f53af0fe822773 Mon Sep 17 00:00:00 2001
From: Nick Clifton <nickc@redhat.com>
Date: Mon, 30 Jan 2012 11:35:37 +0000
Subject: [PATCH 078/262] 	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.

---
 binutils/ChangeLog |    7 +++++++
 binutils/readelf.c |    5 +++--
 2 files changed, 10 insertions(+), 2 deletions(-)

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.
diff --git a/binutils/readelf.c b/binutils/readelf.c
index 9e13190..bf053d9 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -4937,7 +4937,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,
@@ -12942,7 +12943,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,
-- 
1.7.9.5

