From 6a541707f341275fa5081ec36cc6f2551042c21e Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Thu, 19 Mar 2020 14:40:00 +0000 Subject: [PATCH] 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. --- bfd/ChangeLog | 6 ++++++ bfd/elf.c | 9 +++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) 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; -- 2.30.2