PR29870, objdump SEGV in display_debug_lines_decoded dwarf.c:5524
authorAlan Modra <amodra@gmail.com>
Sun, 11 Dec 2022 04:17:57 +0000 (14:47 +1030)
committerAlan Modra <amodra@gmail.com>
Sun, 11 Dec 2022 04:17:57 +0000 (14:47 +1030)
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.

binutils/dwarf.c

index ffe3c10ff75c77fa8db222ccf213cef6a2e30049..6ec3372587667b496c6c4c7c39df119682ebd4fa 100644 (file)
@@ -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);