aboutsummaryrefslogtreecommitdiff
path: root/binutils
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2022-06-27 13:30:35 +0100
committerNick Clifton <nickc@redhat.com>2022-06-27 13:30:35 +0100
commite98e7d9a70dcc987bff0e925f20b78cd4a2979ed (patch)
treeba3164a6606fadcfd15176c21ab64d2dc14a3964 /binutils
parent2a4fc266dbf77ed7ab83da16468e9ba627b8bc2d (diff)
downloadgdb-e98e7d9a70dcc987bff0e925f20b78cd4a2979ed.zip
gdb-e98e7d9a70dcc987bff0e925f20b78cd4a2979ed.tar.gz
gdb-e98e7d9a70dcc987bff0e925f20b78cd4a2979ed.tar.bz2
Fix NULL pointer indirection when parsing corrupt DWARF data.
PR 29290 * dwarf.c (read_and_display_attr_value): Check that debug_info_p is set before dereferencing it.
Diffstat (limited to 'binutils')
-rw-r--r--binutils/ChangeLog7
-rw-r--r--binutils/dwarf.c11
2 files changed, 12 insertions, 6 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 48a3750..7c547e6 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,7 +1,14 @@
2022-06-27 Nick Clifton <nickc@redhat.com>
+ PR 29290
+ * dwarf.c (read_and_display_attr_value): Check that debug_info_p
+ is set before dereferencing it.
+
+2022-06-27 Nick Clifton <nickc@redhat.com>
+
* dwarf.c (fetch_indexed_string): Do not use length of first table
in string section as the length of every table in the section.
+
* testsuite/binutils-all/pr26112.r: Update expected output.
2022-06-22 Kumar N, Bhuvanendra <Kavitha.Natarajan@amd.com>
diff --git a/binutils/dwarf.c b/binutils/dwarf.c
index bcabb61..37b477b 100644
--- a/binutils/dwarf.c
+++ b/binutils/dwarf.c
@@ -2694,18 +2694,17 @@ read_and_display_attr_value (unsigned long attribute,
{
const char *suffix = section ? strrchr (section->name, '.') : NULL;
bool dwo = suffix && strcmp (suffix, ".dwo") == 0;
+ const char *strng;
+ strng = fetch_indexed_string (uvalue, this_set, offset_size, dwo,
+ debug_info_p ? debug_info_p->str_offsets_base : 0);
if (do_wide)
/* We have already displayed the form name. */
printf (_("%c(offset: 0x%s): %s"), delimiter,
- dwarf_vmatoa ("x", uvalue),
- fetch_indexed_string (uvalue, this_set, offset_size, dwo,
- debug_info_p->str_offsets_base));
+ dwarf_vmatoa ("x", uvalue), strng);
else
printf (_("%c(indexed string: 0x%s): %s"), delimiter,
- dwarf_vmatoa ("x", uvalue),
- fetch_indexed_string (uvalue, this_set, offset_size, dwo,
- debug_info_p->str_offsets_base));
+ dwarf_vmatoa ("x", uvalue), strng);
}
break;