Replace reachable assertion with a test and return of NULL.
authorNick Clifton <nickc@redhat.com>
Tue, 6 Feb 2018 16:05:13 +0000 (16:05 +0000)
committerNick Clifton <nickc@redhat.com>
Tue, 6 Feb 2018 16:05:13 +0000 (16:05 +0000)
PR 22793
* readelf.c (find_section): Replace assertion with test and return
of NULL.
(find_section_by_address): Add test of section header table
existance.
(find_section_by_type): Likewise.
(find_section_in_set): Likewise.

binutils/ChangeLog
binutils/readelf.c

index f6f3e9971a64c6a2e043b48f3fc3fca9352720a9..1e7e581bfa420cfe9cfe7fbfcea17e5658c6b1c6 100644 (file)
@@ -1,3 +1,13 @@
+2018-02-06  Nick Clifton  <nickc@redhat.com>
+
+       PR 22793
+       * readelf.c (find_section): Replace assertion with test and return
+       of NULL.
+       (find_section_by_address): Add test of section header table
+       existance.
+       (find_section_by_type): Likewise.
+       (find_section_in_set): Likewise.
+
 2018-02-05  Maciej W. Rozycki  <macro@mips.com>
 
        * testsuite/binutils-all/mips/mips-reginfo.d: New test.
index ae1cda9a7bd54b85f085d1bb48f8b2c4bf5f0d46..e3af50a9c94c1fd232bb4d4ecc6b6583a2de5261 100644 (file)
@@ -655,7 +655,8 @@ find_section (Filedata * filedata, const char * name)
 {
   unsigned int i;
 
-  assert (filedata->section_headers != NULL);
+  if (filedata->section_headers == NULL)
+    return NULL;
 
   for (i = 0; i < filedata->file_header.e_shnum; i++)
     if (streq (SECTION_NAME (filedata->section_headers + i), name))
@@ -672,6 +673,9 @@ find_section_by_address (Filedata * filedata, bfd_vma addr)
 {
   unsigned int i;
 
+  if (filedata->section_headers == NULL)
+    return NULL;
+
   for (i = 0; i < filedata->file_header.e_shnum; i++)
     {
       Elf_Internal_Shdr *sec = filedata->section_headers + i;
@@ -688,6 +692,9 @@ find_section_by_type (Filedata * filedata, unsigned int type)
 {
   unsigned int i;
 
+  if (filedata->section_headers == NULL)
+    return NULL;
+
   for (i = 0; i < filedata->file_header.e_shnum; i++)
     {
       Elf_Internal_Shdr *sec = filedata->section_headers + i;
@@ -707,6 +714,9 @@ find_section_in_set (Filedata * filedata, const char * name, unsigned int * set)
 {
   unsigned int i;
 
+  if (filedata->section_headers == NULL)
+    return NULL;
+
   if (set != NULL)
     {
       while ((i = *set++) > 0)