Avoid use-after-free in DWARF debug names code
A static analyzer pointed out that find_vec_in_debug_names will use the contents of a unique_ptr after it has been destroyed. This patch fixes the bug by hoisting the declaration into the appropriate enclosing block. I'm checking this in as obvious. gdb/ChangeLog 2019-07-01 Tom Tromey <tromey@adacore.com> * dwarf2read.c (dw2_debug_names_iterator::find_vec_in_debug_names): Hoist declaration of without_params. Fix formatting.
This commit is contained in:
parent
269b4ded72
commit
54ee425275
2 changed files with 9 additions and 6 deletions
|
@ -1,3 +1,9 @@
|
|||
2019-07-01 Tom Tromey <tromey@adacore.com>
|
||||
|
||||
* dwarf2read.c
|
||||
(dw2_debug_names_iterator::find_vec_in_debug_names): Hoist
|
||||
declaration of without_params. Fix formatting.
|
||||
|
||||
2019-07-01 Tom Tromey <tromey@adacore.com>
|
||||
|
||||
* ada-exp.y (find_primitive_type): Update.
|
||||
|
|
|
@ -5726,6 +5726,7 @@ dw2_debug_names_iterator::find_vec_in_debug_names
|
|||
{
|
||||
int (*cmp) (const char *, const char *);
|
||||
|
||||
gdb::unique_xmalloc_ptr<char> without_params;
|
||||
if (current_language->la_language == language_cplus
|
||||
|| current_language->la_language == language_fortran
|
||||
|| current_language->la_language == language_d)
|
||||
|
@ -5735,13 +5736,9 @@ dw2_debug_names_iterator::find_vec_in_debug_names
|
|||
|
||||
if (strchr (name, '(') != NULL)
|
||||
{
|
||||
gdb::unique_xmalloc_ptr<char> without_params
|
||||
= cp_remove_params (name);
|
||||
|
||||
without_params = cp_remove_params (name);
|
||||
if (without_params != NULL)
|
||||
{
|
||||
name = without_params.get();
|
||||
}
|
||||
name = without_params.get ();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue