This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Clear static_links in reread_symbols


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

commit 22ad8107d35d833db000e5a5050c0f53af7af51f
Author: Tom Tromey <tom@tromey.com>
Date:   Thu Jul 26 17:54:00 2018 -0600

    Clear static_links in reread_symbols
    
    -fsanitize=address pointed out a use-after free in
    objfile_register_static_link.  The bug turned out to be that
    reread_symbols does not clear the static_links field; this leaves a
    hash table that is filled with freed pointers.
    
    Jan's (now quite old) idea of replacing reread_symbols with a simple
    delete/new still seems good to me, and it's worth noting that it would
    have avoided this bug.
    
    Tested by the buildbot and by observing the change with
    -fsanitize=address.
    
    gdb/ChangeLog
    2018-10-19  Tom Tromey  <tom@tromey.com>
    
    	* symfile.c (reread_symbols): Clear "static_links".

Diff:
---
 gdb/ChangeLog | 4 ++++
 gdb/symfile.c | 1 +
 2 files changed, 5 insertions(+)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index da613eb..483b00e 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,7 @@
+2018-10-19  Tom Tromey  <tom@tromey.com>
+
+	* symfile.c (reread_symbols): Clear "static_links".
+
 2018-10-19  Alan Hayward  <alan.hayward@arm.com>
 
 	* aarch64-linux-tdep.c (AARCH64_SIGCONTEXT_RESERVED_SIZE): New
diff --git a/gdb/symfile.c b/gdb/symfile.c
index 6a1140e..8ab6a25 100644
--- a/gdb/symfile.c
+++ b/gdb/symfile.c
@@ -2497,6 +2497,7 @@ reread_symbols (void)
 	  objfile->psymtabs_addrmap = NULL;
 	  objfile->free_psymtabs = NULL;
 	  objfile->template_symbols = NULL;
+	  objfile->static_links = NULL;
 
 	  /* obstack_init also initializes the obstack so it is
 	     empty.  We could use obstack_specify_allocation but


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]