From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl1-x634.google.com (mail-pl1-x634.google.com [IPv6:2607:f8b0:4864:20::634]) by sourceware.org (Postfix) with ESMTPS id 45E8E3857C7C for ; Fri, 23 Sep 2022 02:27:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 45E8E3857C7C Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-pl1-x634.google.com with SMTP id jm5so9534065plb.13 for ; Thu, 22 Sep 2022 19:27:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-disposition:mime-version:message-id:subject:to:from:date :from:to:cc:subject:date; bh=+uJ/0bMNOEAdkhGQQ3aqoUmuIXBHwaGqBtykHQyq+g8=; b=ezGH4FzDTloPIjHvngw5U/sFQoK4yOgCJqpo28kCJl4f30ILtad/Ja0N5P9ZCn3eIY 3knKaljduKagS+XBwlP7czrHwMuAiiRIsT+yGPd6CsCODCQdXmRq2akVc+DMr/j4BUMg lIWIhL0KXSNrXO3Wg+h7MHgj2NTOvFoIJnJFRyH7qKL3sm0s84PZSbLrGaEc6K7qPVHe qdUZ42hcXd9HKNYeG/oLOxZv2zNDT7DHyStv9NzAmBLSpgLjSYhrXKQdW+DZyE0YqHKO TaxsBlXmbQ+wMsgc0a7bT4tE7Y9BBDxJGgXRaJkRKfVp83y+YtbcyJ8ATl8cHcuXwnfH K6TA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-disposition:mime-version:message-id:subject:to:from:date :x-gm-message-state:from:to:cc:subject:date; bh=+uJ/0bMNOEAdkhGQQ3aqoUmuIXBHwaGqBtykHQyq+g8=; b=pvr2aQjzAQ/7/lco/KYAjK0XDCRYMw7DIkv/Wo8K80rX+/rrArPYroI4mHrtBcerNk BkC5zd/3hUW0ndUMlPWPhg4zuiUbLskOc14bmgEcStno6kTXBbNhZhDM+4RAieGezuZ6 lc55ENb0CgiW+gJ+Ga2A5mz1qty+HHhlW0eQkBdxAZkAQterOuoygqCVauJSrxy4Nhyy AZI4Do8LWOAbq1bYsy/D+Hxr0jijmehHLMutQUT2zuMy/N46IQSy32lkzVcWefz+i8aG +iXnQl1QS1L2KNmbZTctY1QV+QyLkPHifDLACibYl6Gvog/Q9uOCjRk0yo48Phvlso45 NEYA== X-Gm-Message-State: ACrzQf3+lifwzvERL0GrE5mch9wmJa8k9G1+0DuQCcqbfO1sLni25fny L8WG+Y4+kAYSvELKCVDu02pkpdKgOulT7A== X-Google-Smtp-Source: AMsMyM6Bdfn+dy0rOiLIXuwfO0aALYaYi6ZXe57JeUf0XUEjnQsPhiJvqHWlhrcrcc48vDIhlFIQpw== X-Received: by 2002:a17:90a:fc98:b0:202:52cf:c117 with SMTP id ci24-20020a17090afc9800b0020252cfc117mr18149613pjb.26.1663900055208; Thu, 22 Sep 2022 19:27:35 -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 c13-20020a170903234d00b00178323e689fsm4830273plh.171.2022.09.22.19.27.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 22 Sep 2022 19:27:34 -0700 (PDT) Received: by squeak.grove.modra.org (Postfix, from userid 1000) id 4D7AF1141251; Fri, 23 Sep 2022 11:57:32 +0930 (ACST) Date: Fri, 23 Sep 2022 11:57:32 +0930 From: Alan Modra To: binutils@sourceware.org Subject: pdb: _bfd_generic_close_and_cleanup Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Spam-Status: No, score=-3036.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 List-Id: Every format that might appear inside a generic archive needs to call _bfd_generic_close_and_cleanup, so that the archive element lookup htab can be tidied on closing an element. Otherwise you get stale entries in the htab pointing at freed and perhaps reused memory, resulting in segfaults when the archive is closed. Calling _bfd_generic_close_and_cleanup on close means tdata needs to be set up too, since pdb claims to be of format bfd_archive. * pdb.c (pdb_close_and_cleanup): Define as _bfd_generic_close_and_cleanup. (pdb_archive_p): Set up tdata for bfd_archive format. diff --git a/bfd/pdb.c b/bfd/pdb.c index 67d7e73c655..14e1049d03c 100644 --- a/bfd/pdb.c +++ b/bfd/pdb.c @@ -54,6 +54,11 @@ pdb_archive_p (bfd *abfd) return NULL; } + void *tdata = bfd_zalloc (abfd, sizeof (struct artdata)); + if (tdata == NULL) + return NULL; + bfd_ardata (abfd) = tdata; + return _bfd_no_cleanup; } @@ -755,7 +760,7 @@ pdb_write_contents (bfd *abfd) #define pdb_new_section_hook _bfd_generic_new_section_hook #define pdb_get_section_contents _bfd_generic_get_section_contents #define pdb_get_section_contents_in_window _bfd_generic_get_section_contents_in_window -#define pdb_close_and_cleanup _bfd_bool_bfd_true +#define pdb_close_and_cleanup _bfd_generic_close_and_cleanup #define pdb_slurp_armap _bfd_noarchive_slurp_armap #define pdb_slurp_extended_name_table _bfd_noarchive_slurp_extended_name_table -- Alan Modra Australia Development Lab, IBM