aboutsummaryrefslogtreecommitdiff
path: root/binutils/dwarf.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2022-12-11 14:47:57 +1030
committerAlan Modra <amodra@gmail.com>2022-12-11 14:47:57 +1030
commitf2f58a399cf3f946983398cdfe52d0eaa72bf877 (patch)
tree512614405cc00e2556c82cdf09082f6642e080ea /binutils/dwarf.c
parent85f9067d3a47d51a46ba369c60fdec752da0f885 (diff)
downloadbinutils-f2f58a399cf3f946983398cdfe52d0eaa72bf877.zip
binutils-f2f58a399cf3f946983398cdfe52d0eaa72bf877.tar.gz
binutils-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.
Diffstat (limited to 'binutils/dwarf.c')
-rw-r--r--binutils/dwarf.c4
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);