aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--binutils/ChangeLog10
-rw-r--r--binutils/readelf.c12
2 files changed, 21 insertions, 1 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index f6f3e99..1e7e581 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -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.
diff --git a/binutils/readelf.c b/binutils/readelf.c
index ae1cda9..e3af50a 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -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)