From aec72fda3b320c36eb99fc1c4cf95b10fc026729 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Thu, 16 Apr 2020 17:49:38 +0930 Subject: [PATCH] PR25827, Null pointer dereferencing in scan_unit_for_symbols PR 25827 * dwarf2.c (scan_unit_for_symbols): Wrap overlong lines. Don't strdup(0). --- bfd/ChangeLog | 6 ++++++ bfd/dwarf2.c | 12 +++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 2cf36f4c3e..bb6b9f2261 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2020-04-16 Alan Modra + + PR 25827 + * dwarf2.c (scan_unit_for_symbols): Wrap overlong lines. Don't + strdup(0). + 2020-04-15 Fangrui Song PR binutils/24613 diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c index 3ee753d0aa..48b1bdc914 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; -- 2.34.1