diff options
author | Alan Modra <amodra@gmail.com> | 2024-04-12 08:55:02 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2024-04-12 09:00:52 +0930 |
commit | 0f8adbf77dd3f40e74529fa989dca034c73a7273 (patch) | |
tree | 67cfa66db3cfb761fd2d77cb99c2f7537fc7fb53 /binutils | |
parent | fcf8f3237cbaa0f97e57a161d7354cdb89a1ffa4 (diff) | |
download | fsf-binutils-gdb-0f8adbf77dd3f40e74529fa989dca034c73a7273.zip fsf-binutils-gdb-0f8adbf77dd3f40e74529fa989dca034c73a7273.tar.gz fsf-binutils-gdb-0f8adbf77dd3f40e74529fa989dca034c73a7273.tar.bz2 |
Re: Fix null pointer dereference in process_debug_info()
read_bases has a potential null-pointer deref too, and without a
debug_info_p there isn't any point in calling read_bases.
* dwarf.c (process_debug_info): Don't call read_bases when
debug_info_p is NULL.
Diffstat (limited to 'binutils')
-rw-r--r-- | binutils/dwarf.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/binutils/dwarf.c b/binutils/dwarf.c index ce508d0..3ce79f4 100644 --- a/binutils/dwarf.c +++ b/binutils/dwarf.c @@ -4236,7 +4236,7 @@ process_debug_info (struct dwarf_section * section, Only needed for the top DIE on DWARFv5+. No simiar treatment for loclists_base because there should be no loclist attributes in top DIE. */ - if (compunit.cu_version >= 5 && level == 0) + if (debug_info_p && compunit.cu_version >= 5 && level == 0) { int64_t stemp; @@ -4248,17 +4248,14 @@ process_debug_info (struct dwarf_section * section, compunit.cu_version, debug_info_p); - if (debug_info_p) + /* This check was in place before, keep it. */ + stemp = debug_info_p->rnglists_base; + if (stemp < 0) { - /* This check was in place before, keep it. */ - stemp = debug_info_p->rnglists_base; - if (stemp < 0) - { - warn (_("CU @ %#" PRIx64 " has has a negative rnglists_base " - "value of %#" PRIx64 " - treating as zero"), - debug_info_p->cu_offset, stemp); - debug_info_p->rnglists_base = 0; - } + warn (_("CU @ %#" PRIx64 " has has a negative rnglists_base " + "value of %#" PRIx64 " - treating as zero"), + debug_info_p->cu_offset, stemp); + debug_info_p->rnglists_base = 0; } } |