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".
This commit is contained in:
parent
bacb77d018
commit
22ad8107d3
2 changed files with 5 additions and 0 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue