PR29870, objdump SEGV in display_debug_lines_decoded dwarf.c:5524

Message ID Y5XZZileMxvCEgnH@squeak.grove.modra.org
State Repeat Merge
Headers
Series PR29870, objdump SEGV in display_debug_lines_decoded dwarf.c:5524 |

Checks

Context Check Description
snail/binutils-gdb-check warning Git am fail log

Commit Message

Alan Modra Dec. 11, 2022, 1:21 p.m. UTC
  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.
  

Patch

diff --git a/binutils/dwarf.c b/binutils/dwarf.c
index ffe3c10ff75..6ec33725876 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);