From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl1-x62a.google.com (mail-pl1-x62a.google.com [IPv6:2607:f8b0:4864:20::62a]) by sourceware.org (Postfix) with ESMTPS id C103D385B80B for ; Wed, 6 Oct 2021 07:31:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org C103D385B80B Received: by mail-pl1-x62a.google.com with SMTP id j15so1111149plh.7 for ; Wed, 06 Oct 2021 00:31:59 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:subject:message-id:mime-version :content-disposition; bh=XTbn28H93XHGTVHLnt8n6DlQNOFazpgzaRyuFOknDZA=; b=DQHQx32kCIBMrcNsO+9QqDqf2jZgvhJn4aNKIYjkletUzmvulBfL2Ux9NfFtL4E5dh 3u0+wCx34vtF6mfG5DyqG0J2T/R7tALNLz8dRX17A5u3is5oyBsgJ5j3HuuDV3wiu856 Wseyz/FePhGrvSX654TRcxC77DfNrMRpXrsi8im/bsNAF9DW98SCQ+dKo49uIhSLLFsF Jkzo1nK/0qSHruK7GKFbyD62z4wMZrvAufbtVt70ITRPKSwoB3zkkaCyTgviucqtBkvI 603Ndx5caDIvHqhwQ3fdZe15AWIJnpunlcaSaMAGjOh1foDRiwI8we7hsAE/wYo3xEwW 48QA== X-Gm-Message-State: AOAM531sBxT7Qo9rgKXvO6CBVVDKltus/OcQEFuB8j7ZljdR70+lWt0i fJG0qBJ4jILXTHpe7bBDK82z8l+ETCA= X-Google-Smtp-Source: ABdhPJxHmwVB2AWHdWUmGR378I9ddzBeiBiBsO6WAt5SJwSnbvGIUs+6om8yJTK7ujRMtWdI2P6s1g== X-Received: by 2002:a17:90a:d904:: with SMTP id c4mr9200332pjv.7.1633505518424; Wed, 06 Oct 2021 00:31:58 -0700 (PDT) Received: from squeak.grove.modra.org (158.106.96.58.static.exetel.com.au. [58.96.106.158]) by smtp.gmail.com with ESMTPSA id r5sm4007400pjd.13.2021.10.06.00.31.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Oct 2021 00:31:57 -0700 (PDT) Received: by squeak.grove.modra.org (Postfix, from userid 1000) id 72EA711430B5; Wed, 6 Oct 2021 18:01:55 +1030 (ACDT) Date: Wed, 6 Oct 2021 18:01:55 +1030 From: Alan Modra To: binutils@sourceware.org Subject: PR28420, ecoff fuzzing failures Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Spam-Status: No, score=-3038.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 06 Oct 2021 07:32:01 -0000 PR 28420 * coff-mips.c (mips_adjust_reloc_in): Replace abort with error message and return. * ecoff.c (ecoff_slurp_reloc_table): Remove assertion and aborts, instead handle errors gracefully. diff --git a/bfd/coff-mips.c b/bfd/coff-mips.c index 963ab249119..075dd0bdbae 100644 --- a/bfd/coff-mips.c +++ b/bfd/coff-mips.c @@ -351,7 +351,14 @@ mips_adjust_reloc_in (bfd *abfd, arelent *rptr) { if (intern->r_type > MIPS_R_PCREL16) - abort (); + { + /* xgettext:c-format */ + _bfd_error_handler (_("%pB: unsupported relocation type %#x"), + abfd, intern->r_type); + bfd_set_error (bfd_error_bad_value); + rptr->howto = NULL; + return; + } if (! intern->r_extern && (intern->r_type == MIPS_R_GPREL diff --git a/bfd/ecoff.c b/bfd/ecoff.c index 7844a50b39d..7539fadbeca 100644 --- a/bfd/ecoff.c +++ b/bfd/ecoff.c @@ -1606,23 +1606,20 @@ ecoff_slurp_reloc_table (bfd *abfd, (*backend->swap_reloc_in) (abfd, external_relocs + i * external_reloc_size, &intern); + rptr->sym_ptr_ptr = NULL; + rptr->addend = 0; if (intern.r_extern) { /* r_symndx is an index into the external symbols. */ - BFD_ASSERT (intern.r_symndx >= 0 - && (intern.r_symndx - < (ecoff_data (abfd) - ->debug_info.symbolic_header.iextMax))); - rptr->sym_ptr_ptr = symbols + intern.r_symndx; - rptr->addend = 0; + if (intern.r_symndx >= 0 + && (intern.r_symndx + < (ecoff_data (abfd)->debug_info.symbolic_header.iextMax))) + rptr->sym_ptr_ptr = symbols + intern.r_symndx; } else if (intern.r_symndx == RELOC_SECTION_NONE || intern.r_symndx == RELOC_SECTION_ABS) - { - rptr->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr; - rptr->addend = 0; - } + rptr->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr; else { const char *sec_name; @@ -1645,15 +1642,20 @@ ecoff_slurp_reloc_table (bfd *abfd, case RELOC_SECTION_FINI: sec_name = _FINI; break; case RELOC_SECTION_LITA: sec_name = _LITA; break; case RELOC_SECTION_RCONST: sec_name = _RCONST; break; - default: abort (); + default: + sec_name = NULL; + break; } - sec = bfd_get_section_by_name (abfd, sec_name); - if (sec == NULL) - abort (); - rptr->sym_ptr_ptr = sec->symbol_ptr_ptr; - - rptr->addend = - bfd_section_vma (sec); + if (sec_name != NULL) + { + sec = bfd_get_section_by_name (abfd, sec_name); + if (sec != NULL) + { + rptr->sym_ptr_ptr = sec->symbol_ptr_ptr; + rptr->addend = - bfd_section_vma (sec); + } + } } rptr->address = intern.r_vaddr - bfd_section_vma (section); -- Alan Modra Australia Development Lab, IBM