From 327ef784ba105f067f5c1d587908259d7aabb971 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Tue, 17 Mar 2020 17:02:15 +0000 Subject: [PATCH] Replace a couple of assertions in the BFD library that can be triggered by attempts to parse corrupt input files. PR 25633 * elf.c (_bfd_elf_copy_special_section_fields): Replace assertions with error messages. --- bfd/ChangeLog | 6 ++++++ bfd/elf.c | 28 +++++++++++++++++++++++----- gas/ChangeLog | 25 +++++++++++++++++++++++++ opcodes/ChangeLog | 5 +++++ 4 files changed, 59 insertions(+), 5 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 515ab02bf50..461ce208d66 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2020-03-17 Nick Clifton + + PR 25633 + * elf.c (_bfd_elf_copy_special_section_fields): Replace assertions + with error messages. + 2020-03-17 Nick Clifton PR 25687 diff --git a/bfd/elf.c b/bfd/elf.c index 2a299f15f00..6aaa96f83f6 100644 --- a/bfd/elf.c +++ b/bfd/elf.c @@ -12592,13 +12592,31 @@ _bfd_elf_copy_special_section_fields (const bfd * ibfd ATTRIBUTE_UNUSED, } /* Find the output section that corresponds to the isection's sh_info link. */ - BFD_ASSERT (isection->sh_info > 0 - && isection->sh_info < elf_numsections (ibfd)); + if (isection->sh_info == 0 + || isection->sh_info >= elf_numsections (ibfd)) + { + _bfd_error_handler + /* xgettext:c-format */ + (_("%pB(%pA): info section index is invalid"), + obfd, osec); + bfd_set_error (bfd_error_bad_value); + return FALSE; + } + isection = elf_elfsections (ibfd)[isection->sh_info]; - BFD_ASSERT (isection != NULL); - BFD_ASSERT (isection->bfd_section != NULL); - BFD_ASSERT (isection->bfd_section->output_section != NULL); + if (isection == NULL + || isection->bfd_section == NULL + || isection->bfd_section->output_section == NULL) + { + _bfd_error_handler + /* xgettext:c-format */ + (_("%pB(%pA): info section index cannot be set because the section is not in the output"), + obfd, osec); + bfd_set_error (bfd_error_bad_value); + return FALSE; + } + osection->sh_info = elf_section_data (isection->bfd_section->output_section)->this_idx; diff --git a/gas/ChangeLog b/gas/ChangeLog index 8bc4b3aa968..026336220ef 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,28 @@ +2020-03-17 Sergey Belyashov + + PR 25641 + PR 25668 + PR 25633 + Fix disassembling ED+A4/AC/B4/BC opcodes. + Fix assembling lines containing colonless label and instruction + with first operand inside parentheses. + Fix registration of unsupported by target CPU registers. + * config/tc-z80.c: See above. + * config/tc-z80.h: See above. + * testsuite/gas/z80/colonless.d: Update test. + * testsuite/gas/z80/colonless.s: Likewise. + * testsuite/gas/z80/ez80_adl_all.d: Likewise. + * testsuite/gas/z80/ez80_unsup_regs.d: Likewise. + * testsuite/gas/z80/ez80_z80_all.d: Likewise. + * testsuite/gas/z80/gbz80_unsup_regs.d: Likewise. + * testsuite/gas/z80/r800_unsup_regs.d: Likewise. + * testsuite/gas/z80/unsup_regs.s: Likewise. + * testsuite/gas/z80/z180_unsup_regs.d: Likewise. + * testsuite/gas/z80/z80.exp: Likewise. + * testsuite/gas/z80/z80_strict_unsup_regs.d: Likewise. + * testsuite/gas/z80/z80_unsup_regs.d: Likewise. + * testsuite/gas/z80/z80n_unsup_regs.d: Likewise. + 2020-03-13 Andre Vieira PR 25660 diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 3be58d5abc5..3e947367e21 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,8 @@ +2020-03-17 Sergey Belyashov + + PR 25641 + * z80-dis.c: Fix disassembling ED+A4/AC/B4/BC opcodes. + 2020-03-13 Jan Beulich * i386-dis.c (X86_64_0D): Rename to ... -- 2.30.2