diff options
author | Nick Clifton <nickc@redhat.com> | 2022-06-27 13:30:35 +0100 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2022-06-27 13:30:35 +0100 |
commit | e98e7d9a70dcc987bff0e925f20b78cd4a2979ed (patch) | |
tree | ba3164a6606fadcfd15176c21ab64d2dc14a3964 /binutils | |
parent | 2a4fc266dbf77ed7ab83da16468e9ba627b8bc2d (diff) | |
download | gdb-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/ChangeLog | 7 | ||||
-rw-r--r-- | binutils/dwarf.c | 11 |
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; |