[binutils-gdb] Fix an illegal memory access when parsing a corrupt assembler file.

Nick Clifton nickc@sourceware.org
Mon Feb 8 18:32:04 GMT 2021


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

commit 80b652efa2e969d865d06e1a4aec16b4dcd9f435
Author: Nick Clifton <nickc@redhat.com>
Date:   Mon Feb 8 18:31:21 2021 +0000

    Fix an illegal memory access when parsing a corrupt assembler file.
    
            PR 27355
            * dwarf2dbg.c (allocate_filename_to_slot): Allocate the dirs array
            if it has not already been created.

Diff:
---
 gas/ChangeLog   |  6 ++++++
 gas/dwarf2dbg.c | 12 ++++++++++--
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/gas/ChangeLog b/gas/ChangeLog
index 3d55c7f36cc..83b2721c293 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2021-02-08  Nick Clifton  <nickc@redhat.com>
+
+	PR 27355
+	* dwarf2dbg.c (allocate_filename_to_slot): Allocate the dirs array
+	if it has not already been created.
+
 2021-02-04  Nelson Chu  <nelson.chu@sifive.com>
 
 	* config/tc-riscv.c (riscv_multi_subset_supports): Removed
diff --git a/gas/dwarf2dbg.c b/gas/dwarf2dbg.c
index 4fbd1e38ec2..f0cdc232f53 100644
--- a/gas/dwarf2dbg.c
+++ b/gas/dwarf2dbg.c
@@ -769,7 +769,7 @@ allocate_filename_to_slot (const char *  dirname,
     {
       const char * dir = NULL;
 
-      if (dirs)
+      if (dirs != NULL)
 	dir = dirs[files[num].dir];
 
       if (with_md5
@@ -787,7 +787,15 @@ allocate_filename_to_slot (const char *  dirname,
 	  /* If the filenames match, but the directory table entry was
 	     empty, then fill it with the provided directory name.  */
 	  if (dir == NULL)
-	    dirs[files[num].dir] = xmemdup0 (dirname, strlen (dirname));
+	    {
+	      if (dirs == NULL)
+		{
+		  dirs_allocated = files[num].dir + 32;
+		  dirs = XCNEWVEC (char *, dirs_allocated);
+		}
+	      
+	      dirs[files[num].dir] = xmemdup0 (dirname, strlen (dirname));
+	    }
 	    
 	  return TRUE;
 	}


More information about the Binutils-cvs mailing list