From: Nick Clifton Date: Thu, 19 Mar 2020 14:40:00 +0000 (+0000) Subject: Fix assertion failure in the BFD library when called to parse a file containing corru... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6a541707f341275fa5081ec36cc6f2551042c21e;p=binutils-gdb.git Fix assertion failure in the BFD library when called to parse a file containing corrupt ELF group information. PR 25699 * elf.c (bfd_elf_set_group_contents): Replace assertion with an error return. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 44b18d87f97..1c2e1c789f0 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2020-03-19 Nick Clifton + + PR 25699 + * elf.c (bfd_elf_set_group_contents): Replace assertion with an + error return. + 2020-03-19 Sebastian Huber * elfxx-riscv.c (riscv_parse_subset): Don't use C99. diff --git a/bfd/elf.c b/bfd/elf.c index d182387ed4b..6cbc389999d 100644 --- a/bfd/elf.c +++ b/bfd/elf.c @@ -3533,8 +3533,13 @@ bfd_elf_set_group_contents (bfd *abfd, asection *sec, void *failedptrarg) if (symindx == 0) { /* If called from the assembler, swap_out_syms will have set up - elf_section_syms. */ - BFD_ASSERT (elf_section_syms (abfd) != NULL); + elf_section_syms. + PR 25699: A corrupt input file could contain bogus group info. */ + if (elf_section_syms (abfd) == NULL) + { + *failedptr = TRUE; + return; + } symindx = elf_section_syms (abfd)[sec->index]->udata.i; } elf_section_data (sec)->this_hdr.sh_info = symindx;