[binutils-gdb] PR29870, objdump SEGV in display_debug_lines_decoded dwarf.c:5524

Alan Modra amodra@sourceware.org
Sun Dec 11 13:22:06 GMT 2022


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=f2f58a399cf3f946983398cdfe52d0eaa72bf877

commit f2f58a399cf3f946983398cdfe52d0eaa72bf877
Author: Alan Modra <amodra@gmail.com>
Date:   Sun Dec 11 14:47:57 2022 +1030

    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.

Diff:
---
 binutils/dwarf.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

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);


More information about the Binutils-cvs mailing list