aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorJon Turney <jon.turney@dronecode.org.uk>2020-01-02 00:25:56 +0000
committerJon Turney <jon.turney@dronecode.org.uk>2020-01-06 18:30:44 +0000
commita08c904d4e9688a869242d9cec1b64ca23b1214e (patch)
treef2323563785cc167155240fa846194ae34e7379f /gdb
parent89a65580f4522f81ef7e4e49298b24f3ebc14355 (diff)
downloadbinutils-a08c904d4e9688a869242d9cec1b64ca23b1214e.zip
binutils-a08c904d4e9688a869242d9cec1b64ca23b1214e.tar.gz
binutils-a08c904d4e9688a869242d9cec1b64ca23b1214e.tar.bz2
Fix a crash with a malformed PE header
Don't try to read the PE export table when no section contains the RVA for it. (I have a PE executable [1] packed with UPX, where the export table data directory entry contains a RVA which doesn't correspond to any section. Mistakenly trying to debug this with gdb makes it crash.) [1] https://cygwin.com/setup/setup-2.898.x86_64.exe gdb/ChangeLog: 2020-01-02 Jon Turney <jon.turney@dronecode.org.uk> * coff-pe-read.c (read_pe_exported_syms): Don't try to read the export table if no section contains it's RVA.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/coff-pe-read.c6
2 files changed, 11 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 177b505..9a3cca2 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2020-01-02 Jon Turney <jon.turney@dronecode.org.uk>
+
+ * coff-pe-read.c (read_pe_exported_syms): Don't try to read the
+ export table if no section contains it's RVA.
+
2020-01-06 Eli Zaretskii <eliz@gnu.org>
* windows-tdep.c: Fix a typo in WINDOWS_SIGABRT.
diff --git a/gdb/coff-pe-read.c b/gdb/coff-pe-read.c
index e1c51d4..d0c1e05 100644
--- a/gdb/coff-pe-read.c
+++ b/gdb/coff-pe-read.c
@@ -441,6 +441,12 @@ read_pe_exported_syms (minimal_symbol_reader &reader,
}
}
+ if (expptr == 0)
+ {
+ /* no section contains export table rva */
+ return;
+ }
+
export_rva = export_opthdrrva;
export_size = export_opthdrsize;