diff options
author | Alan Modra <amodra@gmail.com> | 2022-12-11 14:47:57 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2022-12-11 14:47:57 +1030 |
commit | f2f58a399cf3f946983398cdfe52d0eaa72bf877 (patch) | |
tree | 512614405cc00e2556c82cdf09082f6642e080ea | |
parent | 85f9067d3a47d51a46ba369c60fdec752da0f885 (diff) | |
download | gdb-f2f58a399cf3f946983398cdfe52d0eaa72bf877.zip gdb-f2f58a399cf3f946983398cdfe52d0eaa72bf877.tar.gz gdb-f2f58a399cf3f946983398cdfe52d0eaa72bf877.tar.bz2 |
PR29870, objdump SEGV in display_debug_lines_decoded dwarf.c:5524
DWARF5 directory and file table allow more opportunity for fuzzers
to break things. There are likely other places in dwarf.c that should
be fixed too.
PR 29870
* dwarf.c (display_debug_lines_decoded): Handle NULL file_table
name entry.
-rw-r--r-- | binutils/dwarf.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/binutils/dwarf.c b/binutils/dwarf.c index ffe3c10..6ec3372 100644 --- a/binutils/dwarf.c +++ b/binutils/dwarf.c @@ -5499,7 +5499,7 @@ display_debug_lines_decoded (struct dwarf_section * section, || (xop == DW_LNS_copy)) { const unsigned int MAX_FILENAME_LENGTH = 35; - char *fileName; + char *fileName = NULL; char *newFileName = NULL; size_t fileNameLength; @@ -5518,7 +5518,7 @@ display_debug_lines_decoded (struct dwarf_section * section, else fileName = (char *) file_table[indx].name; } - else + if (!fileName) fileName = _("<unknown>"); fileNameLength = strlen (fileName); |