From patchwork Wed Oct 25 00:43:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alan Modra X-Patchwork-Id: 78485 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id B100A385841B for ; Wed, 25 Oct 2023 00:43:46 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-pl1-x629.google.com (mail-pl1-x629.google.com [IPv6:2607:f8b0:4864:20::629]) by sourceware.org (Postfix) with ESMTPS id A63BE3858421 for ; Wed, 25 Oct 2023 00:43:29 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A63BE3858421 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org A63BE3858421 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::629 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1698194611; cv=none; b=XEGiMYGaNGBo5Mk/3PkwxtoetL00oFj6rmfAtCjbywgny2uU8nCV8b8EH3+Bk7JVf1FrtU24gbFqm+0okonuKdwQ1+PF3Y/WwCRFdk8kK991G4Z/PUP6nm6SU3HjQUAs+nQVqHLkSpJMkxSwzoELeBwSV1ei/y8nn0pkL3HO6Ng= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1698194611; c=relaxed/simple; bh=QsXjubRIRicuvsPjsm9ImS/qPZbuel4dmXi6uQ3DE3g=; h=DKIM-Signature:Date:From:To:Subject:Message-ID:MIME-Version; b=JfYxOYH96Hpqdp6BsoAmr2ioeCTqKropRXyBHnuErRe0yg7f9iZXVJMCwGRGo4aptAD2LYbZiQCFzVwu1TvyGrQTAzhTVYFd//KFiFG0XtmAZGqAcYe4Oe6A4JZkoyK/BNIRUNLqn+Kkabqu9JF0r5pz1gAIrBX6edIofIUOMvM= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-1bdf4752c3cso32858285ad.2 for ; Tue, 24 Oct 2023 17:43:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698194608; x=1698799408; darn=sourceware.org; h=content-disposition:mime-version:message-id:subject:to:from:date :from:to:cc:subject:date:message-id:reply-to; bh=urQ20GT2YVFRboFgHfqfvS9oJ0MRz4a51KRKnPIdEBA=; b=nBAXjPg0IfuZuVYUZuBbw12yOxMgIAJ+sEpBKfp/fgRQJNunZKkB04rcyKtMtBfwVt PEtf0awkQWlBJzbk4CdVFzWTcwKw+WDEgQTpkcJqYfsa5+zTpkruWhTbWw4x/SDG9wgW j8iNuq0soTilQiQxMikvRetTZTiA0hsfQdgjmhKdQ92XBkJOJfTmK7gLd9aa/+RjUt6a 51W5DeqKws9SuKR8Oux4J9XO8YSEU+69kigMRjbI/Ua33QcQEnLCKC37LhuEc7bKLgcZ hVJdSK51JqqkLhFaODZ1p9N0kT5eXr1jQHkHiDNI4moxSUkkTQHJhkYCJa/fuuEx4XXp YeSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698194608; x=1698799408; h=content-disposition:mime-version:message-id:subject:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=urQ20GT2YVFRboFgHfqfvS9oJ0MRz4a51KRKnPIdEBA=; b=f13iK2ZYOI+SIf6NHy3f03zssQv5EOZbBFavmoQO+MmwEWVKME4VqWVr1l0gGKDYgi rAAcok72eBpfpiH+oIhxA2oYd1bFSLl9pM45HmV2jIIykgUF8aX/30ZWDc4NqwetSXlz QGAOMWs2aLgAPDPUi1tKL+kf244ukCERiSn84PGwNJIRO/dV5NkPzMjNI2SHXb6cF3K7 6Q5Q+aj/Yc8Dqc1yeh1qKXEapFpAH3zX4JRL1Jsv7bbrQvJMvBohovIZIAMNJjzU1uks zNO2Pts/BmTlXMHMmUahRMg2nwu6qaljy1DTHfV/VMYjKVgbE1sez0ZcMMbN9oqXRNvU hyJw== X-Gm-Message-State: AOJu0YxKBzq89v5QcoTu2vbPLthdfXRCBkz0oxFgN4LKhIYaX4TYTUqa Bm+tYC60okshj8ola3Schx4Um1hx6gE= X-Google-Smtp-Source: AGHT+IGj7szVPsEImpBi0FjrZSQ4l4nNvbLTTCdVAaIGA3Db3UYFIYgog8qJHyp35n/aLsIhBVKgUg== X-Received: by 2002:a17:902:eccd:b0:1cb:dc81:379a with SMTP id a13-20020a170902eccd00b001cbdc81379amr6393287plh.53.1698194608108; Tue, 24 Oct 2023 17:43:28 -0700 (PDT) Received: from squeak.grove.modra.org ([2406:3400:51d:8cc0:a1d2:9bb8:b2a0:9a4f]) by smtp.gmail.com with ESMTPSA id z16-20020a170903019000b001b86dd825e7sm7937359plg.108.2023.10.24.17.43.27 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Oct 2023 17:43:27 -0700 (PDT) Received: by squeak.grove.modra.org (Postfix, from userid 1000) id 46C511142472; Wed, 25 Oct 2023 11:13:25 +1030 (ACDT) Date: Wed, 25 Oct 2023 11:13:25 +1030 From: Alan Modra To: binutils@sourceware.org Subject: asan: out of memory in som_set_reloc_info Message-ID: MIME-Version: 1.0 Content-Disposition: inline X-Spam-Status: No, score=-3033.5 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.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces+patchwork=sourceware.org@sourceware.org Sections without SEC_HAS_CONTENTS avoid the file size checks, and of course it doesn't make sense to read such as the contents are all zero. * som.c (som_set_reloc_info): Don't read sections without contents. diff --git a/bfd/som.c b/bfd/som.c index d858b8b1468..dde1f1f8c47 100644 --- a/bfd/som.c +++ b/bfd/som.c @@ -5146,28 +5146,30 @@ som_set_reloc_info (unsigned char *fixup, section contents. */ rptr->addend = var ('V'); - if (rptr->addend == 0 && !section->contents) + if (rptr->addend == 0 + && (section->flags & SEC_HAS_CONTENTS) != 0) { - /* Got to read the damn contents first. We don't - bother saving the contents (yet). Add it one - day if the need arises. */ - bfd_byte *contents; - if (!bfd_malloc_and_get_section (section->owner, section, - &contents)) + if (!section->contents) { - free (contents); - return (unsigned) -1; + /* Got to read the damn contents first. We don't + bother saving the contents (yet). Add it one + day if the need arises. */ + bfd_byte *contents; + if (!bfd_malloc_and_get_section (section->owner, + section, &contents)) + { + free (contents); + return (unsigned) -1; + } + section->contents = contents; + deallocate_contents = 1; } - section->contents = contents; - deallocate_contents = 1; + if (offset - var ('L') <= section->size + && section->size - (offset - var ('L')) >= 4) + rptr->addend = bfd_get_32 (section->owner, + (section->contents + + offset - var ('L'))); } - if (rptr->addend == 0 - && offset - var ('L') <= section->size - && section->size - (offset - var ('L')) >= 4) - rptr->addend = bfd_get_32 (section->owner, - (section->contents - + offset - var ('L'))); - } else rptr->addend = var ('V');