[binutils-gdb] gas: segfault in out_debug_str

Alan Modra amodra@sourceware.org
Mon Apr 20 06:16:44 GMT 2026


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

commit f2830d95872ebd4234e66f87ec4eb3f73f2d079e
Author: Alan Modra <amodra@gmail.com>
Date:   Mon Apr 20 15:39:39 2026 +0930

    gas: segfault in out_debug_str
    
    Another fuzzer fix.  I don't care to emit diagnostics for silly input,
    so haven't done so here.
    
            * dwarf2dbg.c (out_debug_str): Don't segfault on NULL file name.

Diff:
---
 gas/dwarf2dbg.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/gas/dwarf2dbg.c b/gas/dwarf2dbg.c
index c9057213118..7b338bb11cd 100644
--- a/gas/dwarf2dbg.c
+++ b/gas/dwarf2dbg.c
@@ -3058,9 +3058,14 @@ out_debug_str (segT str_seg, symbolS **name_sym, symbolS **comp_dir_sym,
 #endif
       free (dirname);
     }
-  len = strlen (files[first_file].filename) + 1;
-  p = frag_more (len);
-  memcpy (p, files[first_file].filename, len);
+  if (files[first_file].filename)
+    {
+      len = strlen (files[first_file].filename) + 1;
+      p = frag_more (len);
+      memcpy (p, files[first_file].filename, len);
+    }
+  else
+    frag_append_1_char (0);
 
   /* DW_AT_comp_dir */
   *comp_dir_sym = symbol_temp_new_now_octets ();


More information about the Binutils-cvs mailing list