[binutils-gdb] Fix an illegal memory access by readelf when displaying the contents of a corrupt IA64 binary.

Nick Clifton nickc@sourceware.org
Thu Feb 27 16:29:00 GMT 2020


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=736990c44277615e47d5dfab523c70488911624d

commit 736990c44277615e47d5dfab523c70488911624d
Author: Nick Clifton <nickc@redhat.com>
Date:   Thu Feb 27 16:28:25 2020 +0000

    Fix an illegal memory access by readelf when displaying the contents of a corrupt IA64 binary.
    
    	PR 25526
    	* readelf.c (process_ia64_vms_dynamic_relocs): Check to see if
    	get_data is unable to load the string table.

Diff:
---
 binutils/ChangeLog | 6 ++++++
 binutils/readelf.c | 3 +++
 2 files changed, 9 insertions(+)

diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index b15238a..24d17c2 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,9 @@
+2020-02-27  Nick Clifton  <nickc@redhat.com>
+
+	PR 25526
+	* readelf.c (process_ia64_vms_dynamic_relocs): Check to see if
+	get_data is unable to load the string table.
+
 2020-02-26  Alan Modra  <amodra@gmail.com>
 
 	* elfedit.c: Indent labels correctly.
diff --git a/binutils/readelf.c b/binutils/readelf.c
index ee34bd6..bf84f87 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -7104,6 +7104,7 @@ dump_ia64_vms_dynamic_fixups (Filedata *                  filedata,
             (unsigned long) fixup->needed);
       lib_name = "???";
     }
+
   printf (_("\nImage fixups for needed library #%d: %s - ident: %lx\n"),
 	  (int) fixup->fixup_needed, lib_name, (long) fixup->needed_ident);
   printf
@@ -7203,6 +7204,8 @@ process_ia64_vms_dynamic_relocs (Filedata * filedata)
           if (strtab == NULL)
             strtab = get_data (NULL, filedata, dynamic_addr + strtab_off,
                                1, strtab_sz, _("dynamic string section"));
+	  if (strtab == NULL)
+	    strtab_sz = 0;
           break;
 
         case DT_IA_64_VMS_NEEDED_IDENT:



More information about the Binutils-cvs mailing list