From 736990c44277615e47d5dfab523c70488911624d Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Thu, 27 Feb 2020 16:28:25 +0000 Subject: 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. --- binutils/ChangeLog | 6 ++++++ binutils/readelf.c | 3 +++ 2 files changed, 9 insertions(+) (limited to 'binutils') 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 + + 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 * 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: -- cgit v1.1