diff options
author | Alan Modra <amodra@gmail.com> | 2020-04-16 17:49:38 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2020-04-16 17:55:04 +0930 |
commit | aec72fda3b320c36eb99fc1c4cf95b10fc026729 (patch) | |
tree | 6dbb3b680cb434ff4ea8d7cc74248bf956f149e2 /bfd/dwarf2.c | |
parent | c54a9b56696e584c2b8c7146caac337c063f5516 (diff) | |
download | gdb-aec72fda3b320c36eb99fc1c4cf95b10fc026729.zip gdb-aec72fda3b320c36eb99fc1c4cf95b10fc026729.tar.gz gdb-aec72fda3b320c36eb99fc1c4cf95b10fc026729.tar.bz2 |
PR25827, Null pointer dereferencing in scan_unit_for_symbols
PR 25827
* dwarf2.c (scan_unit_for_symbols): Wrap overlong lines. Don't
strdup(0).
Diffstat (limited to 'bfd/dwarf2.c')
-rw-r--r-- | bfd/dwarf2.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c index 3ee753d..48b1bdc 100644 --- a/bfd/dwarf2.c +++ b/bfd/dwarf2.c @@ -3379,18 +3379,20 @@ scan_unit_for_symbols (struct comp_unit *unit) { struct varinfo * spec_var; - spec_var = lookup_var_by_offset (attr.u.val, unit->variable_table); + spec_var = lookup_var_by_offset (attr.u.val, + unit->variable_table); if (spec_var == NULL) { - _bfd_error_handler - (_("DWARF error: could not find variable specification at offset %lx"), - (unsigned long) attr.u.val); + _bfd_error_handler (_("DWARF error: could not find " + "variable specification " + "at offset %lx"), + (unsigned long) attr.u.val); break; } if (var->name == NULL) var->name = spec_var->name; - if (var->file == NULL) + if (var->file == NULL && spec_var->file != NULL) var->file = strdup (spec_var->file); if (var->line == 0) var->line = spec_var->line; |