[binutils-gdb] PR27426, More bugs in dwarf2dbg.c

Alan Modra amodra@sourceware.org
Tue Feb 16 09:07:46 GMT 2021


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

commit 9a12b194b0e9d1bde34aca175a2a7dead2fae7a9
Author: Alan Modra <amodra@gmail.com>
Date:   Tue Feb 16 14:39:04 2021 +1030

    PR27426, More bugs in dwarf2dbg.c
    
            PR 27426
            * dwarf2dbg.c (allocate_filename_to_slot): Allocate the dirs array
            in another place.

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

diff --git a/gas/ChangeLog b/gas/ChangeLog
index f4c9d0a0fa6..c74e63cd135 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2021-02-16  Alan Modra  <amodra@gmail.com>
+
+	PR 27426
+	* dwarf2dbg.c (allocate_filename_to_slot): Allocate the dirs array
+	in another place.
+
 2021-02-16  Alan Modra  <amodra@gmail.com>
 
 	* read.c (demand_copy_C_string): Really check for embedded zeros.
diff --git a/gas/dwarf2dbg.c b/gas/dwarf2dbg.c
index f0cdc232f53..85db0bef230 100644
--- a/gas/dwarf2dbg.c
+++ b/gas/dwarf2dbg.c
@@ -812,10 +812,18 @@ allocate_filename_to_slot (const char *  dirname,
 	  file = get_basename (filename);
 	  if (filename_cmp (file, files[num].filename) == 0)
 	    {
+	      /* The filenames match, but the directory table entry is empty.
+		 Fill it with the provided directory name.  */
 	      if (file > filename)
-		/* The filenames match, but the directory table entry is empty.
-		   Fill it with the provided directory name.  */
-		dirs[files[num].dir] = xmemdup0 (filename, file - filename);
+		{
+		  if (dirs == NULL)
+		    {
+		      dirs_allocated = files[num].dir + 32;
+		      dirs = XCNEWVEC (char *, dirs_allocated);
+		    }
+
+		  dirs[files[num].dir] = xmemdup0 (filename, file - filename);
+		}
 	      return TRUE;
 	    }
 	}


More information about the Binutils-cvs mailing list