From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.netbsd.org (mail.netbsd.org [199.233.217.200]) by sourceware.org (Postfix) with ESMTPS id C2A1E3857C46 for ; Tue, 8 Sep 2020 00:57:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org C2A1E3857C46 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=netbsd.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=kamil@netbsd.org Received: from [IPv6:::1] (localhost [127.0.0.1]) by mail.netbsd.org (Postfix) with ESMTP id ECE0184CCD; Tue, 8 Sep 2020 00:57:48 +0000 (UTC) Subject: Re: [PATCH v2 08/10] Avoid double free in startup_inferior To: Simon Marchi , gdb-patches@sourceware.org Cc: tom@tromey.com References: <20200904002905.13616-1-n54@gmx.com> <20200904002905.13616-9-n54@gmx.com> <96629e3b-c2d5-f705-f469-f5e527aab2a2@simark.ca> From: Kamil Rytarowski Autocrypt: addr=kamil@netbsd.org; keydata= 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 Message-ID: <0a7f8dbb-a48f-0fc9-77f8-a03c2efe3444@netbsd.org> Date: Tue, 8 Sep 2020 02:54:51 +0200 User-Agent: Mozilla/5.0 (X11; NetBSD amd64; rv:68.0) Gecko/20100101 Thunderbird/68.4.1 MIME-Version: 1.0 In-Reply-To: <96629e3b-c2d5-f705-f469-f5e527aab2a2@simark.ca> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="jaEcbMJiaDEZoV1Q5omFD7zaVT5b93ezd" X-Spam-Status: No, score=-10.4 required=5.0 tests=BAYES_00, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, NICE_REPLY_A, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Sep 2020 00:57:53 -0000 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --jaEcbMJiaDEZoV1Q5omFD7zaVT5b93ezd Content-Type: multipart/mixed; boundary="IqXQ2F3qesJP1MVPEBY7mNm2pR0aDujBt"; protected-headers="v1" From: Kamil Rytarowski To: Simon Marchi , gdb-patches@sourceware.org Cc: tom@tromey.com Message-ID: <0a7f8dbb-a48f-0fc9-77f8-a03c2efe3444@netbsd.org> Subject: Re: [PATCH v2 08/10] Avoid double free in startup_inferior References: <20200904002905.13616-1-n54@gmx.com> <20200904002905.13616-9-n54@gmx.com> <96629e3b-c2d5-f705-f469-f5e527aab2a2@simark.ca> In-Reply-To: <96629e3b-c2d5-f705-f469-f5e527aab2a2@simark.ca> --IqXQ2F3qesJP1MVPEBY7mNm2pR0aDujBt Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: quoted-printable On 07.09.2020 21:19, Simon Marchi wrote: > On 2020-09-03 8:29 p.m., Kamil Rytarowski wrote: >> Do not free the last execd pathname as it will be used in >> prepare_resume_reply(), after attaching a client side. >=20 > Ok, so this function returns to its caller the last waitstatus. So ind= eed we > want to clean up all the watstatus objects except the last one, which w= e hand > over to the caller. >=20 >> gdb/ChangeLog: >> >> * fork-inferior.c (startup_inferior): Avoid double free. >> --- >> gdb/ChangeLog | 4 ++++ >> gdb/nat/fork-inferior.c | 5 ++++- >> 2 files changed, 8 insertions(+), 1 deletion(-) >> >> diff --git a/gdb/ChangeLog b/gdb/ChangeLog >> index b96e7bf08e8..1013f6a0b3c 100644 >> --- a/gdb/ChangeLog >> +++ b/gdb/ChangeLog >> @@ -1,3 +1,7 @@ >> +2020-09-04 Kamil Rytarowski >> + >> + * fork-inferior.c (startup_inferior): Avoid double free. >> + >> 2020-09-04 Kamil Rytarowski >> >> * netbsd-nat.h (netbsd_nat::qxfer_siginfo): Add. >> diff --git a/gdb/nat/fork-inferior.c b/gdb/nat/fork-inferior.c >> index 1185ef8998b..94ab0b9cbc2 100644 >> --- a/gdb/nat/fork-inferior.c >> +++ b/gdb/nat/fork-inferior.c >> @@ -526,7 +526,10 @@ startup_inferior (process_stratum_target *proc_ta= rget, pid_t pid, int ntraps, >> >> case TARGET_WAITKIND_EXECD: >> /* Handle EXEC signals as if they were SIGTRAP signals. */ >> - xfree (ws.value.execd_pathname); >> + /* Do not free the last execd pathname as it will be used in >> + prepare_resume_reply(), after attaching a client side. */ >=20 > Since this is common code, let's just write it in a gdbserver or gdb ag= nostic way. >=20 > I'd suggest something like: Free the exec'ed pathname, but only if this= isn't the > waitstatus we are returning to the caller. >=20 Please be more specific how to fix. > Simon >=20 --IqXQ2F3qesJP1MVPEBY7mNm2pR0aDujBt-- --jaEcbMJiaDEZoV1Q5omFD7zaVT5b93ezd Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEELaxVpweEzw+lMDwuS7MI6bAudmwFAl9W1lsACgkQS7MI6bAu dmyh0BAAsZoEK6LyvDARPYx2om05fStJInM4sLx1hvDW5bJQvFBEzzaKkeqcR6zj UpeDpMV0eBlkNC1cgDWhQlzjWRsW1p6YMexuRxk0JBgNlSmVi2M/pghe7fa3eLBG qI7qUk3G34kFM9qwwfzYKBv8utYDyWEp9foh2Y7kHxID7n3Egjwxj9bTavedhETo GsFNBTvzJSqrs+Q3QF149tb2SotX2wzKT+BH3RFxKC03PSPZaUNiEYRnt3MkgB0Y OCIqs8W6/3jHiNcdo+aA5K8PN8+0olv9F5DCxWo54LV4iHG5kWzfmdnJILQEEkGY BqL/nR9fd1JgYqVy4HudJ2DnyETW4WEzLGE/MX91eGTRswQHpkT+54RRSgl0sIeW I11aiblOnUUTjCpZMhWIGZETliqlDoHqFwOHv0SRmbwhu4fWuLVz3iiCxilUUlPj 4mbRAv5cMc4e62BUstA+wOaVCQ601lFsNKNJOTms/l3mpdu31hInxmwiN3oFBzkW 5HduRCrJ9JAd3B+JWLq7z0u2m49H3wMWmbrHzfemgA1j/Jc7csZTX3GT1xtwnAf9 Pl/hMgAoev2kyiNXQ30s9kziV7hZe2PyLhWPeM2Azk7idRmNYoYKEaj0f7jWwf6s ZbgO/nydPKyutyYBNKzhgAn+6Gde+KO48KQvcOw3fJOdMdE4hXY= =VlyG -----END PGP SIGNATURE----- --jaEcbMJiaDEZoV1Q5omFD7zaVT5b93ezd--