diff options
author | Nick Clifton <nickc@redhat.com> | 2023-09-29 15:24:26 +0100 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2023-09-29 15:24:26 +0100 |
commit | a78c3c9717e8fa98b11482f948e71c6d1d9d0e44 (patch) | |
tree | abe1ce0e20f072d66bba8afbd32d132dfb344772 /bfd/elf.c | |
parent | 68510906a981d6abd31c51f49b2ec7e18db0a338 (diff) | |
download | gdb-a78c3c9717e8fa98b11482f948e71c6d1d9d0e44.zip gdb-a78c3c9717e8fa98b11482f948e71c6d1d9d0e44.tar.gz gdb-a78c3c9717e8fa98b11482f948e71c6d1d9d0e44.tar.bz2 |
Fix: Segmentation fault caused by npd in objdump
PR 30906
* elf.c (_bfd_elf_slurp_version_tables): Test that the verref section header has been initialised before using it.
Diffstat (limited to 'bfd/elf.c')
-rw-r--r-- | bfd/elf.c | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -9482,7 +9482,9 @@ _bfd_elf_slurp_version_tables (bfd *abfd, bool default_imported_symver) = elf_tdata (abfd)->dt_strtab + iverneed->vn_file; else iverneed->vn_filename = NULL; - } + } + else if (hdr == NULL) + goto error_return_bad_verref; else iverneed->vn_filename = bfd_elf_string_from_elf_section (abfd, hdr->sh_link, @@ -9525,6 +9527,8 @@ _bfd_elf_slurp_version_tables (bfd *abfd, bool default_imported_symver) else ivernaux->vna_nodename = NULL; } + else if (hdr == NULL) + goto error_return_bad_verref; else ivernaux->vna_nodename = bfd_elf_string_from_elf_section (abfd, hdr->sh_link, @@ -9555,7 +9559,7 @@ _bfd_elf_slurp_version_tables (bfd *abfd, bool default_imported_symver) iverneed->vn_nextref = NULL; if (iverneed->vn_next == 0) break; - if (i + 1 < hdr->sh_info) + if (hdr != NULL && (i + 1 < hdr->sh_info)) iverneed->vn_nextref = iverneed + 1; if (iverneed->vn_next |