From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com [IPv6:2a00:1450:4864:20::52c]) by sourceware.org (Postfix) with ESMTPS id 89E953858031 for ; Wed, 1 Mar 2023 18:07:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 89E953858031 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-ed1-x52c.google.com with SMTP id u9so7918112edd.2 for ; Wed, 01 Mar 2023 10:07:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1677694075; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=WJWhWaM8DKan+24SDTN1beu1optqYwKtFmEkImVhPBo=; b=G6H50yVAQyPQTTXO4juTFniI0lU1554c5YGLsI0F6EjYUnpuLf2MZwuteygvDjnpeF srP4Mxvuj34U1chiOm+N+FR2gEqcXDkPMmQK4SURc60TQYDtRVnRPmYTxOSKnO8WBiWk 6/Tj+perCVzqxm1YRC+dd3uXosq0kgoGG3uAwpPQZigXwer2tyWl9u0UtHh5LRN4/NTq ZbfhGMpTl6eaPU9qsNOZ4Dn0NrsEecEn/Ao4fldGyzfzOVCimjoIdmt+HnHRNKFzGVta Gz1901BRw+Fnt4Enk7MN287zuJf+kSpjZxdOBplwitRS9EfT2MxlfyvufYjfDI01L8b3 zY+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677694075; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=WJWhWaM8DKan+24SDTN1beu1optqYwKtFmEkImVhPBo=; b=EoPeenlSs2t08berqCl3ntn6dOq/QjikgbWT22l/AGYulqwJosyn54h6TozwJDdT20 FvE+EwZXzEYQ5DKMcUxw9pBRBLFY55cxvDaJYN7lNK65OpFymz9zsKlG/kjbDDdR2CfA dmhopfvw6C1F0WpA/XkH1JvelEJkFMA3C+JSx4I+FCfyBsU7dN3rLhiBvQLANF6xcAw0 dWYanC+HCFjf03/bsZ2r2E/PFjBqOda6+bjxwCpOJEX0owpDnUVvMXgEHRlCBUCn0zQT VrHl1F0U2bQ22zf5HA6hTYA5zNyBTNd0HWgrOSCKM83sKJ/SNPWTy9lxwlZksB+7Gs37 1nyQ== X-Gm-Message-State: AO0yUKXk7+pxGy9pFDYOS4vV1hkHEK342LvXVTj3Q1yeXyHm+bijLfke F08/K2j2AEUPmjW4L+rhZ9JMpk7p2uNRIw7I6KG6ZyVCACp86g== X-Google-Smtp-Source: AK7set9F9Z12TWdCrzlZWYI0TOP2v8NlqogZ2xuW6vy53ueDrwH8YKzYjkJ8xEXhWtJzqC6CiX8v8Nkr9F5L+LLHivk= X-Received: by 2002:a50:c3cd:0:b0:4bc:136a:e25 with SMTP id i13-20020a50c3cd000000b004bc136a0e25mr1609087edf.3.1677694074722; Wed, 01 Mar 2023 10:07:54 -0800 (PST) MIME-Version: 1.0 From: Costas Argyris Date: Wed, 1 Mar 2023 18:07:43 +0000 Message-ID: Subject: [PATCH] libiberty: fix memory leak in pex-win32.c and refactor To: gcc-patches@gcc.gnu.org Content-Type: multipart/mixed; boundary="0000000000005de29305f5da9752" X-Spam-Status: No, score=-7.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,HTML_MESSAGE,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: --0000000000005de29305f5da9752 Content-Type: multipart/alternative; boundary="0000000000005de29105f5da9750" --0000000000005de29105f5da9750 Content-Type: text/plain; charset="UTF-8" Hi It seems that the win32_spawn function in libiberty/pex-win32.c is leaking the cmdline buffer in 2/3 exit scenarios (it is only free'd in 1/3). The problem here is that the cleanup code is written 3 times, one at each exit scenario. The proposed attached refactoring has the cleanup code appearing just once and is executed for all exit scenarios, reducing the likelihood of such leaks in the future. Thanks, Costas --0000000000005de29105f5da9750-- --0000000000005de29305f5da9752 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-libiberty-fix-memory-leak-in-pex-win32.c-and-refacto.patch" Content-Disposition: attachment; filename="0001-libiberty-fix-memory-leak-in-pex-win32.c-and-refacto.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lepznizy0 RnJvbSBjYTFmZjdiNDhkYjJlMzA5NjNiZDRjMGUwOGVjZDY2NTMyMTRhNWRi IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBDb3N0YXMgQXJneXJp cyA8Y29zdGFzLmFyZ3lyaXNAZ21haWwuY29tPgpEYXRlOiBTdW4sIDI2IEZl YiAyMDIzIDE2OjM0OjExICswMDAwClN1YmplY3Q6IFtQQVRDSF0gbGliaWJl cnR5OiBmaXggbWVtb3J5IGxlYWsgaW4gcGV4LXdpbjMyLmMgYW5kIHJlZmFj dG9yCgpGaXggbWVtb3J5IGxlYWsgb2YgY21kbGluZSBidWZmZXIgYW5kIHJl ZmFjdG9yIHRvIGhhdmUKY2xlYW51cCBjb2RlIGFwcGVhciBvbmNlIGZvciBh bGwgZXhpdCBjYXNlcy4KLS0tCiBsaWJpYmVydHkvcGV4LXdpbjMyLmMgfCAz MyArKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBj aGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9saWJpYmVydHkvcGV4LXdpbjMyLmMgYi9saWJpYmVydHkv cGV4LXdpbjMyLmMKaW5kZXggMDJkM2EzZTgzOWIuLjgyMzAzOTQ3ZGU0IDEw MDY0NAotLS0gYS9saWJpYmVydHkvcGV4LXdpbjMyLmMKKysrIGIvbGliaWJl cnR5L3BleC13aW4zMi5jCkBAIC01NzcsMTQgKzU3NywxMiBAQCB3aW4zMl9z cGF3biAoY29uc3QgY2hhciAqZXhlY3V0YWJsZSwKIAkgICAgIExQU1RBUlRV UElORk8gc2ksCiAJICAgICBMUFBST0NFU1NfSU5GT1JNQVRJT04gcGkpCiB7 Ci0gIGNoYXIgKmZ1bGxfZXhlY3V0YWJsZTsKLSAgY2hhciAqY21kbGluZTsK KyAgY2hhciAqZnVsbF9leGVjdXRhYmxlID0gTlVMTDsKKyAgY2hhciAqY21k bGluZSA9IE5VTEw7CisgIHBpZF90IHBpZCA9IChwaWRfdCkgLTE7CiAgIGNo YXIgKiplbnZfY29weTsKICAgY2hhciAqZW52X2Jsb2NrID0gTlVMTDsKIAot ICBmdWxsX2V4ZWN1dGFibGUgPSBOVUxMOwotICBjbWRsaW5lID0gTlVMTDsK LQogICBpZiAoZW52KQogICAgIHsKICAgICAgIGludCBlbnZfc2l6ZTsKQEAg LTYyMiwxMyArNjIwLDEzIEBAIHdpbjMyX3NwYXduIChjb25zdCBjaGFyICpl eGVjdXRhYmxlLAogCiAgIGZ1bGxfZXhlY3V0YWJsZSA9IGZpbmRfZXhlY3V0 YWJsZSAoZXhlY3V0YWJsZSwgc2VhcmNoKTsKICAgaWYgKCFmdWxsX2V4ZWN1 dGFibGUpCi0gICAgZ290byBlcnJvcjsKKyAgICBnb3RvIGV4aXQ7CiAgIGNt ZGxpbmUgPSBhcmd2X3RvX2NtZGxpbmUgKGFyZ3YpOwogICBpZiAoIWNtZGxp bmUpCi0gICAgZ290byBlcnJvcjsKKyAgICBnb3RvIGV4aXQ7CiAgICAgCiAg IC8qIENyZWF0ZSB0aGUgY2hpbGQgcHJvY2Vzcy4gICovICAKLSAgaWYgKCFD cmVhdGVQcm9jZXNzIChmdWxsX2V4ZWN1dGFibGUsIGNtZGxpbmUsIAorICBp ZiAoQ3JlYXRlUHJvY2VzcyAoZnVsbF9leGVjdXRhYmxlLCBjbWRsaW5lLCAK IAkJICAgICAgLypscFByb2Nlc3NBdHRyaWJ1dGVzPSovTlVMTCwKIAkJICAg ICAgLypscFRocmVhZEF0dHJpYnV0ZXM9Ki9OVUxMLAogCQkgICAgICAvKmJJ bmhlcml0SGFuZGxlcz0qL1RSVUUsCkBAIC02MzgsMjYgKzYzNiwxNyBAQCB3 aW4zMl9zcGF3biAoY29uc3QgY2hhciAqZXhlY3V0YWJsZSwKIAkJICAgICAg c2ksCiAJCSAgICAgIHBpKSkKICAgICB7Ci0gICAgICBmcmVlIChlbnZfYmxv Y2spOwotCi0gICAgICBmcmVlIChmdWxsX2V4ZWN1dGFibGUpOwotCi0gICAg ICByZXR1cm4gKHBpZF90KSAtMTsKKyAgICAgIENsb3NlSGFuZGxlIChwaS0+ aFRocmVhZCk7CisgICAgICBwaWQgPSAocGlkX3QpIHBpLT5oUHJvY2VzczsK ICAgICB9Ci0KKyAgCisgZXhpdDoKICAgLyogQ2xlYW4gdXAuICAqLwotICBD bG9zZUhhbmRsZSAocGktPmhUaHJlYWQpOwotICBmcmVlIChmdWxsX2V4ZWN1 dGFibGUpOwotICBmcmVlIChlbnZfYmxvY2spOwotCi0gIHJldHVybiAocGlk X3QpIHBpLT5oUHJvY2VzczsKLQotIGVycm9yOgogICBmcmVlIChlbnZfYmxv Y2spOwogICBmcmVlIChjbWRsaW5lKTsKICAgZnJlZSAoZnVsbF9leGVjdXRh YmxlKTsKIAotICByZXR1cm4gKHBpZF90KSAtMTsKKyAgcmV0dXJuIHBpZDsK IH0KIAogLyogU3Bhd24gYSBzY3JpcHQuICBUaGlzIHNpbXVsYXRlcyB0aGUg VW5peCBzY3JpcHQgZXhlY3V0aW9uIG1lY2hhbmlzbS4KLS0gCjIuMzAuMgoK --0000000000005de29305f5da9752--