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.
This commit is contained in:
Nick Clifton 2023-09-29 15:24:26 +01:00
parent 68510906a9
commit a78c3c9717
2 changed files with 12 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2023-09-29 Nick Clifton <nickc@redhat.com>
PR 30906
* elf.c (_bfd_elf_slurp_version_tables): Test that the verref
section header has been initialised before using it.
2023-09-28 Nick Clifton <nickc@redhat.com>
PR 30886

View File

@ -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