From patchwork Thu Jun 30 18:00:11 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12902050 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2D453C433EF for ; Thu, 30 Jun 2022 18:00:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235682AbiF3SAa (ORCPT ); Thu, 30 Jun 2022 14:00:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48976 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230363AbiF3SA2 (ORCPT ); Thu, 30 Jun 2022 14:00:28 -0400 Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com [IPv6:2a00:1450:4864:20::429]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2D5872A245 for ; Thu, 30 Jun 2022 11:00:27 -0700 (PDT) Received: by mail-wr1-x429.google.com with SMTP id r20so28439960wra.1 for ; Thu, 30 Jun 2022 11:00:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=wpZt1MiGqApQZlUCB9tKc4a9Gu1UEEmFOp4kGkjAkik=; b=fpxbLUM5O1rYVf8aEC5j/HLYPr3dnXeohe0npkp/gPP4AgDXIEQffzhIcytCSw1DFJ IwewSgLarxYhrtXyQEucVNkEzAPCJ0TN3U9k7SnK2TGF3XzO0S9Pd3O4FWceQ1bviXKa 3x/+rZ7FW3w9YjhZ0Ab9VXfFK6ifXCiAhe3oD0x0wqfdNGWWcI687b5bYuFYXVNLN9+o Bdy8npvbL+DzvGhNv9z0xR7POwKBo9LxE0H2XKxR9H0mG14s2q0RsSIyNX+qjmBf7syQ rxblRvaWmQookGF4ZzXuGxiISa/VDVUtbJ5bZZGiYdg1PU7nPIl5gBVWsXvyi6u3xVOV d/kA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=wpZt1MiGqApQZlUCB9tKc4a9Gu1UEEmFOp4kGkjAkik=; b=hRp+7fLJBPWMubUnRAZYgiEGz/pSz+u5bpRMI6ZL7SgjtnxkNt2JK7WBvxS351q29I X46IAgC92kK77jSnMDtfA+YLCdDh8riEupHU2br6ky2qxusprbr5MjgCGDTi7ijhG3rv idxnND/8Uan7z5gGip2MNQ5K4ZAj3R/dejofnNFGmc7w3LDqJ1/b/gGVt1xnF5+M1vlc CXc0nzO5Z6C2R+UzsBD5p9By53plXE5k7W3JsBrqkP2tclGP8jxqUDv5t7ZDD0YAOKG0 fiHltPnY4FWseXOut5NGGmkbtPobqWLnBs/zn4RhGzbNz6OKHnHpMG77JygBBODTOiAF vA+A== X-Gm-Message-State: AJIora9qxwivb2VmAVwUFG0exzanBFHl/qvxk3hXSiTmpioo4iCaarz6 wTrqNOktY2eIJ1laLcfzjuRDnv+/ouywXQ== X-Google-Smtp-Source: AGRyM1tlZuPMLTsojvbrQUJBvFk/9DiBD6LhgD/L5rGamrmeMSaSQSCwgzhHlxnH+NiHIHr6B5g7qg== X-Received: by 2002:a05:6000:696:b0:21b:9219:b26e with SMTP id bo22-20020a056000069600b0021b9219b26emr9793674wrb.272.1656612025332; Thu, 30 Jun 2022 11:00:25 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id v13-20020a1cf70d000000b0039747cf8354sm7363985wmh.39.2022.06.30.11.00.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Jun 2022 11:00:24 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBC?= =?utf-8?b?amFybWFzb24=?= Subject: [PATCH 01/11] check-ref-format: fix trivial memory leak Date: Thu, 30 Jun 2022 20:00:11 +0200 Message-Id: X-Mailer: git-send-email 2.37.0.874.g7d3439f13c4 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Fix a memory leak in "git check-ref-format" that's been present in the code in one form or another since 38eedc634bc (git check-ref-format --print, 2009-10-12), the code got substantially refactored in cfbe22f03f9 (check-ref-format: handle subcommands in separate functions, 2010-08-05). As a result we can mark a test as passing with SANITIZE=leak using "TEST_PASSES_SANITIZE_LEAK=true". Signed-off-by: Ævar Arnfjörð Bjarmason --- builtin/check-ref-format.c | 11 ++++++++--- t/t1402-check-ref-format.sh | 1 + 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/builtin/check-ref-format.c b/builtin/check-ref-format.c index bc67d3f0a83..fd0e5f86832 100644 --- a/builtin/check-ref-format.c +++ b/builtin/check-ref-format.c @@ -57,6 +57,8 @@ int cmd_check_ref_format(int argc, const char **argv, const char *prefix) int normalize = 0; int flags = 0; const char *refname; + char *to_free = NULL; + int ret = 1; if (argc == 2 && !strcmp(argv[1], "-h")) usage(builtin_check_ref_format_usage); @@ -81,11 +83,14 @@ int cmd_check_ref_format(int argc, const char **argv, const char *prefix) refname = argv[i]; if (normalize) - refname = collapse_slashes(refname); + refname = to_free = collapse_slashes(refname); if (check_refname_format(refname, flags)) - return 1; + goto cleanup; if (normalize) printf("%s\n", refname); - return 0; + ret = 0; +cleanup: + free(to_free); + return ret; } diff --git a/t/t1402-check-ref-format.sh b/t/t1402-check-ref-format.sh index cabc516ae9a..5ed9d7318e0 100755 --- a/t/t1402-check-ref-format.sh +++ b/t/t1402-check-ref-format.sh @@ -2,6 +2,7 @@ test_description='Test git check-ref-format' +TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh valid_ref() { From patchwork Thu Jun 30 18:00:12 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12902052 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 769F2C433EF for ; Thu, 30 Jun 2022 18:00:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236274AbiF3SAd (ORCPT ); Thu, 30 Jun 2022 14:00:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48988 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235130AbiF3SA3 (ORCPT ); Thu, 30 Jun 2022 14:00:29 -0400 Received: from mail-wr1-x42b.google.com (mail-wr1-x42b.google.com [IPv6:2a00:1450:4864:20::42b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3B7A528739 for ; Thu, 30 Jun 2022 11:00:28 -0700 (PDT) Received: by mail-wr1-x42b.google.com with SMTP id e28so23281200wra.0 for ; Thu, 30 Jun 2022 11:00:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=h9aj3Lnupz8KmbsEqdc653+y8WXrvreEqZG+rFIF47I=; b=R55sQ40Ds6HmOW/WAjSLHKl56LxuJn+KsVAJjou99q8jmxgPpNvTk4Oq1jowkfj2Qw i1ESnR6quOpT32+O+q+5gBrr9cGbhBU6iSPiWcLP0VCS2h0F47tKJkcBkqIHXencmBN2 G8rINzK0qdg21rDvju/wqqABUMsKRw0l2n+A5uuSx0d2xzEbqo6O0tPBitZHFkINrcID T//QAu9SVUZ6/Z/NTwL7r1c+ycWN02FNuTUnQdilG41+nec9+qzX+GTmnzfpqUkJwJJm LYBjekbUadgI6EIuWi2xtNYzJJTKaBHkFPu6Y+fp9NELLcGJVyYVKYM7UvEnpxbBSdwN 5lnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=h9aj3Lnupz8KmbsEqdc653+y8WXrvreEqZG+rFIF47I=; b=CptBBxusxMieQgeXS8HsvT7umUVK+H2nsVtZFtCBp3FNDkAZKKyb4s1VIhck+oExwr H+BtcizBa/pLaexsv2J0wkZQXVB5WWIJQ0G+DAa3Ghz8UT9jni0fxtWTDBq7PTUVAuQ3 In3ucGk8JLZb8x8fYLao5X5IF2VhFxwp0InbgltcemSeO2Otes0Tn4EmHPYH54aHb0T/ v24Y2SjtIKsO754dHRL2MN3ZG7T7ihWVryaJT62cAy+/XtbliNKqlCir/MtC/J2giA5L Tx+7yWQ4CX/BAttekStcVKydzapRMt+gk4L/dXw1s1awA5bFI+7YXTjEpQT+d09GyxWu XjWA== X-Gm-Message-State: AJIora+7iiSEYSncUonvnVG08V+jHIleTLJZkeecDWBxSpngIPjt/Rn4 ZmhHFcEuaDanOxc3xmrBRrQuPVfETFh7Ww== X-Google-Smtp-Source: AGRyM1vHhBfYYR9P/LFCsmHlXnftJHfCDFr2MSMliJKSvn6aOMmFp7SBOOOuhCLHV1qVkfx73adcPw== X-Received: by 2002:a5d:648b:0:b0:21b:a2d3:8dff with SMTP id o11-20020a5d648b000000b0021ba2d38dffmr10028963wri.716.1656612026408; Thu, 30 Jun 2022 11:00:26 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id v13-20020a1cf70d000000b0039747cf8354sm7363985wmh.39.2022.06.30.11.00.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Jun 2022 11:00:25 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBC?= =?utf-8?b?amFybWFzb24=?= Subject: [PATCH 02/11] clone: fix memory leak in copy_ref() call Date: Thu, 30 Jun 2022 20:00:12 +0200 Message-Id: X-Mailer: git-send-email 2.37.0.874.g7d3439f13c4 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Fix a memory leak added in 0ec4b1650cc (clone: fix ref selection in --single-branch --branch=xxx, 2012-06-22), we need to free_refs() the result of copy_ref(). We can't mark any tests passing passing with SANITIZE=leak using "TEST_PASSES_SANITIZE_LEAK=true" as a result of this change, but e.g. "t/t1500-rev-parse.sh" now gets closer to passing. Signed-off-by: Ævar Arnfjörð Bjarmason --- builtin/clone.c | 1 + 1 file changed, 1 insertion(+) diff --git a/builtin/clone.c b/builtin/clone.c index 89a91b00177..c43c85dad07 100644 --- a/builtin/clone.c +++ b/builtin/clone.c @@ -494,6 +494,7 @@ static struct ref *wanted_peer_refs(const struct ref *refs, /* if --branch=tag, pull the requested tag explicitly */ get_fetch_map(remote_head, tag_refspec, &tail, 0); } + free_refs(remote_head); } else { int i; for (i = 0; i < refspec->nr; i++) From patchwork Thu Jun 30 18:00:13 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12902053 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A03C8C43334 for ; Thu, 30 Jun 2022 18:00:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236311AbiF3SAe (ORCPT ); Thu, 30 Jun 2022 14:00:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48996 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235522AbiF3SAa (ORCPT ); Thu, 30 Jun 2022 14:00:30 -0400 Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com [IPv6:2a00:1450:4864:20::32f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2678829813 for ; Thu, 30 Jun 2022 11:00:29 -0700 (PDT) Received: by mail-wm1-x32f.google.com with SMTP id f190so11539090wma.5 for ; Thu, 30 Jun 2022 11:00:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=oSjgEpJpS1hCTwXFyzvEJZom7E1w/0RxXe0G9lCTwEs=; b=b0C4vr5z4Vb3k0oDmEpbYZCL4wx9rCc6KnCOQFa/wfIjIWT0nDeNRO3yc62hUaqp3y kHxuhX2HkZy1y2/0p4gBE3mbMV+ETKLAkhJRL/skMJ5B7fdDzPTvSW+usInUplPFdtxt Wc0u2zWD4ZVtHaZGshtsP5w5CdTpPt0IUpAJj+c3uSh2jsvugfJQKVZ6HletTyGWbxJP g75mdmbHOSXQyDxGCJyYCKWXRV7qZI+thBZOcFfXqIjp9ewlF3SW8JksUqBbKhtxNwVX EUbo3PUiI6xbMuyWYLMSwT9+0xSBY9yXCd/ejzIlIP28vBHWAP0hthlMR8WcuCUI3ibT Og0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=oSjgEpJpS1hCTwXFyzvEJZom7E1w/0RxXe0G9lCTwEs=; b=qQHMrvY3F5JDxyesftnCHOE6mC8VCrsqF+e4pKrWW5CfMMRRD+0OoAXwJT13OFY7wJ bI0jvl29NAwUbgzFL2fCUg7v+/s+IHrGxkTrUrBbRdTdoFyPHxN2T6RkmXjqinOzpbeQ tAOieOSi4kj3Rb/JEhvzhwO6RcgKv8BirzT6mOZyI+Z20IulDT2jGBp6ZIvodciaUChi p/IVObpE4lnqm0W5y4hkPWcnJogXyEi8X2JjPeQ7ip9yGPjqn8f+nVoGP6Y/HRv78MTY RJ8TRL+KyBn1qQycKsamZM48GfydEMjlVd6IPlZR9KIcspff3u4+a/eYewBDs/7gP1+y DIIQ== X-Gm-Message-State: AJIora+jvLaUuVNN1dk1bfNfsYC/MBIjjaJ6v0pJFlO+TQC9c/TNkOg6 XRDxbA4GaXjQGTzNqjcLjMkCD5/Erbt7aQ== X-Google-Smtp-Source: AGRyM1spUFQ6jDr02rE54Gytz9Mjho5+BJ1BTVdf67CtORdB2UzFZJWotOMUB1d2KldRS5auT9lszA== X-Received: by 2002:a05:600c:1d0b:b0:3a0:3ab8:924 with SMTP id l11-20020a05600c1d0b00b003a03ab80924mr11294182wms.137.1656612027441; Thu, 30 Jun 2022 11:00:27 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id v13-20020a1cf70d000000b0039747cf8354sm7363985wmh.39.2022.06.30.11.00.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Jun 2022 11:00:26 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBC?= =?utf-8?b?amFybWFzb24=?= Subject: [PATCH 03/11] submodule.c: free() memory from xgetcwd() Date: Thu, 30 Jun 2022 20:00:13 +0200 Message-Id: X-Mailer: git-send-email 2.37.0.874.g7d3439f13c4 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Fix a memory leak in code added in bf0231c6614 (rev-parse: add --show-superproject-working-tree, 2017-03-08), we should never have made the result of xgetcwd() a "const char *", as we return a strbuf_detach()'d value. Let's fix that and free() it when we're done with it. We can't mark any tests passing passing with SANITIZE=leak using "TEST_PASSES_SANITIZE_LEAK=true" as a result of this change, but e.g. "t/t1500-rev-parse.sh" now gets closer to passing. Signed-off-by: Ævar Arnfjörð Bjarmason --- submodule.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/submodule.c b/submodule.c index 4e299f578f9..06073b2e7be 100644 --- a/submodule.c +++ b/submodule.c @@ -2388,7 +2388,7 @@ int get_superproject_working_tree(struct strbuf *buf) struct child_process cp = CHILD_PROCESS_INIT; struct strbuf sb = STRBUF_INIT; struct strbuf one_up = STRBUF_INIT; - const char *cwd = xgetcwd(); + char *cwd = xgetcwd(); int ret = 0; const char *subpath; int code; @@ -2451,6 +2451,7 @@ int get_superproject_working_tree(struct strbuf *buf) ret = 1; free(super_wt); } + free(cwd); strbuf_release(&sb); code = finish_command(&cp); From patchwork Thu Jun 30 18:00:14 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12902054 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 36109C43334 for ; Thu, 30 Jun 2022 18:00:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236444AbiF3SAh (ORCPT ); Thu, 30 Jun 2022 14:00:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49008 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235699AbiF3SAb (ORCPT ); Thu, 30 Jun 2022 14:00:31 -0400 Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com [IPv6:2a00:1450:4864:20::432]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0A9F828739 for ; Thu, 30 Jun 2022 11:00:30 -0700 (PDT) Received: by mail-wr1-x432.google.com with SMTP id cl1so4717494wrb.4 for ; Thu, 30 Jun 2022 11:00:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/E0HFoCBdWkhlbrT8Ou+VgAigUTtm94fGTUj59Bz//o=; b=gN+xXuLVRFsyk2wAnJXlWUeYBNoXEbrP8uSPvxI6gJOGLk3HEhFJeY9poNDnFEeLGC oDrCYpeWaHH5yMxrXIw/Y5pOfCGZLB5S/vheclEiFPpZA7yPcl1+oCIJaz9F7a002OIR Xpf1oUXhW8+HIp2KPkws3XzzqnjCZGukK00wuI+ME9czmo84mhi6jswoujWcQbmsVQ5d qxkaVx9jde1sIhRAT6IpP61C1zVZ3Y98pMhKAhrY4aWm+/YLN7pg7a87b8tA4U6hHTNO r1nwsJGQEzyCJ+8P7h7IrMiiJULhNxnPJOKbAVT7k+RR6Rg9qXU2r1Rs5uhafuzFFoKX aE8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/E0HFoCBdWkhlbrT8Ou+VgAigUTtm94fGTUj59Bz//o=; b=8MbHxgBY54I1NDs2Rg1BimCKT8iyCspIihz7BoH4IZz6DdFB5SM/Pq8i/Y64fmxOtX l4ApMRC1YQc0ytsKBpUYAg1QdecPaMjR91XrN20KxYuEekCnHMsAN55QU3OkY08/LzTE srVs7IPgokdGRHWhH7Bwvr7VIYZk5JqgJgh3s1U9nlE3n4jjua8PQuyHnvHx0F6Njrbt lRt0BVm1bdMQHVqKylcYYbEdjZowEgw2fNg5opUdtndpjXs+LJxovZe/eZ23nQeyztmU 9H0/DyTkKOjirunXla/D44Jgg91uQUEfPUVjx5kfPY95bO05IBtdVWNIhlb5SrLbD6Lb Ts3w== X-Gm-Message-State: AJIora//LquNkH84mbi7DgpeSbxbZ+ebB6gm1IBJNtxDnEbR8YaAZqJi HDdzSd9jsHEW3UJNaLcOBWPY/8sivx8Vwg== X-Google-Smtp-Source: AGRyM1uuFpZhe++sceJkLYLMuTyFLcxms9UGQ85+70qPLNTkof+2doiPmlrQPsG+DWECBvF1zVli3g== X-Received: by 2002:adf:fb0e:0:b0:21a:34a2:5ca9 with SMTP id c14-20020adffb0e000000b0021a34a25ca9mr9853814wrr.472.1656612028324; Thu, 30 Jun 2022 11:00:28 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id v13-20020a1cf70d000000b0039747cf8354sm7363985wmh.39.2022.06.30.11.00.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Jun 2022 11:00:27 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBC?= =?utf-8?b?amFybWFzb24=?= Subject: [PATCH 04/11] revert: free "struct replay_opts" members Date: Thu, 30 Jun 2022 20:00:14 +0200 Message-Id: X-Mailer: git-send-email 2.37.0.874.g7d3439f13c4 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Call the release_revisions() function added in 1878b5edc03 (revision.[ch]: provide and start using a release_revisions(), 2022-04-13) in cmd_revert(), as well as freeing the xmalloc()'d "revs" member itself. Signed-off-by: Ævar Arnfjörð Bjarmason --- builtin/revert.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/builtin/revert.c b/builtin/revert.c index f84c253f4c6..2554f9099cc 100644 --- a/builtin/revert.c +++ b/builtin/revert.c @@ -246,6 +246,9 @@ int cmd_revert(int argc, const char **argv, const char *prefix) res = run_sequencer(argc, argv, &opts); if (res < 0) die(_("revert failed")); + if (opts.revs) + release_revisions(opts.revs); + free(opts.revs); return res; } From patchwork Thu Jun 30 18:00:15 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12902055 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id BFA68C433EF for ; Thu, 30 Jun 2022 18:00:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236507AbiF3SAk (ORCPT ); Thu, 30 Jun 2022 14:00:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49032 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234038AbiF3SAc (ORCPT ); Thu, 30 Jun 2022 14:00:32 -0400 Received: from mail-wr1-x42f.google.com (mail-wr1-x42f.google.com [IPv6:2a00:1450:4864:20::42f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 01DC42A245 for ; Thu, 30 Jun 2022 11:00:31 -0700 (PDT) Received: by mail-wr1-x42f.google.com with SMTP id i1so23939671wrb.11 for ; Thu, 30 Jun 2022 11:00:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=82l5LxkXvS4/opIltRfd8tweB0pQ/NAlswZAKuZfnfA=; b=MSvCiHEoIRzzUIAFM0K43BZZ0FxR5o2wsThkRvsj8//hwwhJSF0y+JKlhO/s1YVOP1 J59rUNbejOBALmXCQrndDdw/X4Q6TvRa9skdhtSUMvFD1f2G1mMx0sdXgb8ic+kx7AlA niQsviKaT2I23sqL1lVpu8HIP1wvPs59oIBmtklGZDYmctmYrSJIh529V6q4q1YbJiYg Udu6vSEFbDiQfO4yTy7mQPm++tAj79IKc9oIBp1M7yS836HYw1CiGA0IO8qy/S02AvLg UuBUNdGHi4fioAFMGCJmZqfqN2sOk/5YM+FyDu4VW9iZxvHmQTx5uAowRKDDkEscbcUF nzoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=82l5LxkXvS4/opIltRfd8tweB0pQ/NAlswZAKuZfnfA=; b=0M75d9NvOyoMOoOhFLKc0zpbyITopanNtuUbuSY6OCgQmiIpMztm1EEsuatYsm8Oh7 wfGoyKKcqHpp5Dlr9NYXp/NMwlRpNSrfxDGUh8t7TEP/5M3hH4jJsQw/DqbeDDHbRM5c +Z4VnHeWKkjZiNwcTGSYkEDGxsa1MqehkvVsO4+YJEgUrwaZ9lhMQecYinnnfVNKLPb/ GOY3JK9veOd+fiI6f3DPs4iA/uyT2HTMwgo2+s/PeerRzNG69nFsVNjhzGZ4FtKp5Pm4 N0jIEmE/lIBPeNjickH0VHWTpQc0cyPcMPk94fMz2lZMq5cnHBRM3lJOuU+PRc2EN/Ui a6Xw== X-Gm-Message-State: AJIora+5uA1tB31MU9x93pohUFwWZxyHhYzVemgLfDxy504S0AscP24G c2eX2icxcjCsuhkBFKx47pshpBDGxlNkgA== X-Google-Smtp-Source: AGRyM1tEoegIFHlq4bC/64oddgbdMjX7p6gxvNBpviiXruUq8xg+oJT5kbubd8d6+LvXQeLPM34hMw== X-Received: by 2002:a05:6000:a12:b0:21b:93b9:134f with SMTP id co18-20020a0560000a1200b0021b93b9134fmr9577125wrb.310.1656612029243; Thu, 30 Jun 2022 11:00:29 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id v13-20020a1cf70d000000b0039747cf8354sm7363985wmh.39.2022.06.30.11.00.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Jun 2022 11:00:28 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBC?= =?utf-8?b?amFybWFzb24=?= Subject: [PATCH 05/11] cat-file: fix a memory leak in --batch-command mode Date: Thu, 30 Jun 2022 20:00:15 +0200 Message-Id: X-Mailer: git-send-email 2.37.0.874.g7d3439f13c4 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Fix a memory leak introduced in 440c705ea63 (cat-file: add --batch-command mode, 2022-02-18). The free_cmds() function was only called on "queued_nr" if we had a "flush" command. As the "without flush for blob info" test added in the same commit shows we can't rely on that, so let's call free_cmds() again at the end. Since "nr" follows the usual pattern of being set to 0 if we've free()'d the memory already it's OK to call it twice, even in cases where we are doing a "flush". Signed-off-by: Ævar Arnfjörð Bjarmason --- builtin/cat-file.c | 1 + 1 file changed, 1 insertion(+) diff --git a/builtin/cat-file.c b/builtin/cat-file.c index 50cf38999d1..ac0459f96be 100644 --- a/builtin/cat-file.c +++ b/builtin/cat-file.c @@ -655,6 +655,7 @@ static void batch_objects_command(struct batch_options *opt, free_cmds(queued_cmd, &nr); } + free_cmds(queued_cmd, &nr); free(queued_cmd); strbuf_release(&input); } From patchwork Thu Jun 30 18:00:16 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12902056 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 208BBC433EF for ; Thu, 30 Jun 2022 18:00:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236436AbiF3SAn (ORCPT ); Thu, 30 Jun 2022 14:00:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49058 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236063AbiF3SAd (ORCPT ); Thu, 30 Jun 2022 14:00:33 -0400 Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com [IPv6:2a00:1450:4864:20::429]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DEADB2A712 for ; Thu, 30 Jun 2022 11:00:31 -0700 (PDT) Received: by mail-wr1-x429.google.com with SMTP id o4so24504536wrh.3 for ; Thu, 30 Jun 2022 11:00:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=tODHKQvb/FVDFItrqEbu70gJbbFXjzSBPN/X+YCwv6Q=; b=bdiYSDVC9WT53UjQip+Cgc4w/RuYVkygPmjUhrPBkXeFP7UW0Gn+enBm7NkfTCkwlo lrTewchJk88YXaxGm3s9+0ytIn22Me1CqkkiU4ubRMcZbN64nV/naBSfxOCafg7AHGix D5klwHjyVThyTHZAOLfTWMlVHRrylQ2WAHQ1NneQp3zX6F/3mVj65Y+MKMTk3U0CO21c VH/GnuSRvnDofAe4j5pfruBuIVdyqJgfVKl+V18joBMw+yDG40TsXADSM5Vd4JrUiXz2 5h+JoDMUpIJe4FinjHkYOhc/bkIRK0sYK1sRnWOftOWwBdo42GuXb1tohLMPsXFacsDl Nqsw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=tODHKQvb/FVDFItrqEbu70gJbbFXjzSBPN/X+YCwv6Q=; b=7Jx2Qsbsa3kYGro4t6b89urutQpLcrC96NbKxsbsOLr8Qs5Qy6ItCbvNCCnmC5cWrN ESFP+2AIlMxvTNV9mhcpjB9KIkGxnkDH4V6a4SW1IjBtC1mQhw5DokmgFXSv7MNrpXLz QcqEgpZIfWUzvjLBF6zzY4xp7vRRXE71nSd0b4XPHgJCMx/35gbwum4Lpuf2wzMtz1n+ caY7jRwX28iQHDbO5kClqXKBSyS/pgh7pTU4r5yfkYR0B8VjDgi7Kz5Qahh4YZpKb5ai AyrDXnv4tIoqrhBUkTuqK8+LxEmd03ZgxPSrGLNYkY6dZLA+2THY6ArQS6ZU0+MeYc/B nAVw== X-Gm-Message-State: AJIora9Gnia3nEV0Vh3T2cx9N3CQc6e4xD82gmidH/uPnNrac0MqDMkd xKwqAEyc8JErSkPE0tXsBIMJ91qlu6l04w== X-Google-Smtp-Source: AGRyM1vzup9K5mIqbCvFyXkDF2cnwQjhe0367dLgpkFL424DMDbfGaWyttmyEQvbvkjtgLsGi8P97g== X-Received: by 2002:a05:6000:1449:b0:21b:b171:5eb8 with SMTP id v9-20020a056000144900b0021bb1715eb8mr9837785wrx.634.1656612030119; Thu, 30 Jun 2022 11:00:30 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id v13-20020a1cf70d000000b0039747cf8354sm7363985wmh.39.2022.06.30.11.00.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Jun 2022 11:00:29 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBC?= =?utf-8?b?amFybWFzb24=?= Subject: [PATCH 06/11] merge-file: refactor for subsequent memory leak fix Date: Thu, 30 Jun 2022 20:00:16 +0200 Message-Id: X-Mailer: git-send-email 2.37.0.874.g7d3439f13c4 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Refactor the code in builtin/merge-file.c to: * Use the initializer to zero out "mmfs", and use modern C syntax for the rest. * Refactor the the inner loop to use a variable and "if/else if" pattern followed by "return". This will make a change to change it to a "goto cleanup" pattern smaller. Signed-off-by: Ævar Arnfjörð Bjarmason --- builtin/merge-file.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/builtin/merge-file.c b/builtin/merge-file.c index e695867ee54..793817f3cb9 100644 --- a/builtin/merge-file.c +++ b/builtin/merge-file.c @@ -25,10 +25,10 @@ static int label_cb(const struct option *opt, const char *arg, int unset) int cmd_merge_file(int argc, const char **argv, const char *prefix) { - const char *names[3] = { NULL, NULL, NULL }; - mmfile_t mmfs[3]; - mmbuffer_t result = {NULL, 0}; - xmparam_t xmp = {{0}}; + const char *names[3] = { 0 }; + mmfile_t mmfs[3] = { 0 }; + mmbuffer_t result = { 0 }; + xmparam_t xmp = { 0 }; int ret = 0, i = 0, to_stdout = 0; int quiet = 0; struct option options[] = { @@ -71,21 +71,23 @@ int cmd_merge_file(int argc, const char **argv, const char *prefix) for (i = 0; i < 3; i++) { char *fname; - int ret; + mmfile_t *mmf = mmfs + i; if (!names[i]) names[i] = argv[i]; fname = prefix_filename(prefix, argv[i]); - ret = read_mmfile(mmfs + i, fname); + + if (read_mmfile(mmf, fname)) + ret = -1; + else if (mmf->size > MAX_XDIFF_SIZE || + buffer_is_binary(mmf->ptr, mmf->size)) + ret = error("Cannot merge binary files: %s", + argv[i]); + free(fname); if (ret) - return -1; - - if (mmfs[i].size > MAX_XDIFF_SIZE || - buffer_is_binary(mmfs[i].ptr, mmfs[i].size)) - return error("Cannot merge binary files: %s", - argv[i]); + return ret; } xmp.ancestor = names[1]; From patchwork Thu Jun 30 18:00:17 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12902057 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E4CECC43334 for ; Thu, 30 Jun 2022 18:00:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236516AbiF3SAp (ORCPT ); Thu, 30 Jun 2022 14:00:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49056 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235951AbiF3SAd (ORCPT ); Thu, 30 Jun 2022 14:00:33 -0400 Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com [IPv6:2a00:1450:4864:20::429]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F04A72A717 for ; Thu, 30 Jun 2022 11:00:31 -0700 (PDT) Received: by mail-wr1-x429.google.com with SMTP id s1so28428523wra.9 for ; Thu, 30 Jun 2022 11:00:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=n8+WUp+iXKHBR2PdSBe8FTzBTza1e7kWfoCBBPI9EXM=; b=A7+vRDBK0CC6wyOBnr/gYYHaQNjOalrTjzPN1CAMCstH/lEwrvpYiyiyEjM/1+ezg/ nO6lFIOlUISJ6iZ/ZMuVeKcBoIsGgN3tf/qKKdPkOef9/5HWPOP4eFO2Rk28z4FNhJdo 3/GBK1JU4Y+EwSN3Dtprt6URFPu73cpahiEZjfNMH9Ck3oW5x8v2dspyAV+G1PO03kxy roeXBDkqTSHni2iIWYXoSflo4ca6MUexNBGoo3kNPjTcFhCr85I+YZr9+7LZkXo3bxnQ yGJHJuNEmlWIyn9M9nW//t6LvF3TNIVcHfaXvJVzGQyioDHzWEi3pYVp5/Oy3LU4Dg4/ S10Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=n8+WUp+iXKHBR2PdSBe8FTzBTza1e7kWfoCBBPI9EXM=; b=VrMsKZt6lF3m9h8cCpM/Y4kJqfVD6gGmWOOgPBbmQlb2WovO2pBDP0+9fz+DwGk9cU LQICIHs1ellptr3buZUaBB4AOc745fdCMPpU7nPRbzp7W9TILH0U7f2EJFKGe4ZEOMip 8/ARtHYnIG8FvMlR+O6pluTAIZA6Z9HVDypD4MbdMubfEvrOfu4TR9Yof9rQaNc1dnoI +YNub2at9oKLkel03J9AGd78t9JzKvX5BA1xf3DYnaIWAn4xpt9QKKPK5lP4FpwbtfPP HlUIqG8biPadLfoCKBSHbCYAxhbS0cTNAQIQRSAoO72ylIuv/nqjZ6xYW1AGeSON5Nhj zpNg== X-Gm-Message-State: AJIora8FjkvD7N2wInI7tn4fqnGrYe/j9/+FeOAhZhF36G0nAECYr7h6 5sW5XMhet9BqKekSiPgvviowhff32KtqQA== X-Google-Smtp-Source: AGRyM1vJti81AN1IM9ziHbje+kvtCvuXiQrpnKwU3IzNi0WqtaDRgqEwRlAHzNcQuTz4eFYaoph1qw== X-Received: by 2002:a5d:59a8:0:b0:21d:1bdd:44b9 with SMTP id p8-20020a5d59a8000000b0021d1bdd44b9mr10154464wrr.7.1656612031242; Thu, 30 Jun 2022 11:00:31 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id v13-20020a1cf70d000000b0039747cf8354sm7363985wmh.39.2022.06.30.11.00.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Jun 2022 11:00:30 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBC?= =?utf-8?b?amFybWFzb24=?= Subject: [PATCH 07/11] merge-file: fix memory leaks on error path Date: Thu, 30 Jun 2022 20:00:17 +0200 Message-Id: X-Mailer: git-send-email 2.37.0.874.g7d3439f13c4 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Fix a memory leak in "merge-file", we need to loop over the "mmfs" array and free() what we've got so far when we error out. As a result we can mark a test as passing with SANITIZE=leak using "TEST_PASSES_SANITIZE_LEAK=true". Signed-off-by: Ævar Arnfjörð Bjarmason --- builtin/merge-file.c | 10 ++++++---- t/t6403-merge-file.sh | 2 ++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/builtin/merge-file.c b/builtin/merge-file.c index 793817f3cb9..c923bbf2abb 100644 --- a/builtin/merge-file.c +++ b/builtin/merge-file.c @@ -87,7 +87,8 @@ int cmd_merge_file(int argc, const char **argv, const char *prefix) free(fname); if (ret) - return ret; + goto cleanup; + } xmp.ancestor = names[1]; @@ -95,9 +96,6 @@ int cmd_merge_file(int argc, const char **argv, const char *prefix) xmp.file2 = names[2]; ret = xdl_merge(mmfs + 1, mmfs + 0, mmfs + 2, &xmp, &result); - for (i = 0; i < 3; i++) - free(mmfs[i].ptr); - if (ret >= 0) { const char *filename = argv[0]; char *fpath = prefix_filename(prefix, argv[0]); @@ -118,5 +116,9 @@ int cmd_merge_file(int argc, const char **argv, const char *prefix) if (ret > 127) ret = 127; +cleanup: + for (i = 0; i < 3; i++) + free(mmfs[i].ptr); + return ret; } diff --git a/t/t6403-merge-file.sh b/t/t6403-merge-file.sh index 2f421d967ab..1a7082323dd 100755 --- a/t/t6403-merge-file.sh +++ b/t/t6403-merge-file.sh @@ -1,6 +1,8 @@ #!/bin/sh test_description='RCS merge replacement: merge-file' + +TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh test_expect_success 'setup' ' From patchwork Thu Jun 30 18:00:18 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12902058 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1D0F5C43334 for ; Thu, 30 Jun 2022 18:00:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236322AbiF3SAs (ORCPT ); Thu, 30 Jun 2022 14:00:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49114 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235522AbiF3SAe (ORCPT ); Thu, 30 Jun 2022 14:00:34 -0400 Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com [IPv6:2a00:1450:4864:20::32e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E9B032B180 for ; Thu, 30 Jun 2022 11:00:33 -0700 (PDT) Received: by mail-wm1-x32e.google.com with SMTP id c130-20020a1c3588000000b0039c6fd897b4so2202926wma.4 for ; Thu, 30 Jun 2022 11:00:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=x5KFVq4Oc/TWec4m2HFI91CLhVdMAYYioKZ1+MXf0Qc=; b=DM3h9RWhv5KZpj9tsUKJ+1la8U/aBI+AlX+SJb48FcuYpGd3A1S/4HeivkJERu1Pbf tbJomhyTkK1LBkv8ve5xkieyiCCcDTaVv4aC15DPKjMkLTgVEErNJPMbMc1MeAc0pyHu csJamh+VKYkq8WIBs4sxlRer3untYzj3T3tqOJXfgpO55iwZDL730T6AcNrKwFc7NkmK vIbWAXoSZT6tv6+hJZSu3sAbMMB6wvOquJOhexgb3fXFZH1IXo979ghq149UkZAaanuv 2aX9VhhLLdJzs68y0VXqjAC19JiARkkrQTNDgo75nTPhohfLgoAw3UgiEm4HhmIhqZST JX4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=x5KFVq4Oc/TWec4m2HFI91CLhVdMAYYioKZ1+MXf0Qc=; b=E4uxlIy5tXDZwq0CNeSTAdvPcGvda6tHlvuvcXhhYeDeauRoIrnbc/i/WDheMtOfLI UM1QLiUW3BUObJgiVSjd2JLB3zG9qv6QKIuV/Fqh6i7xyMz8NwO+CS3tCzvUf4bMmJQP 21GRnluUidyCgA3sQDTYNH+C30JtQjMdMPAdLpZXkyJVy25xVzCxpG+fsy5zHUsrNJ7f ygCDYE17sAaXIZ8BoYSf1qKCk6OcinreM9YIKHp0fIwjos8aJrKxfKb8Qjuabe2p16m+ 24AC8Zn4R0Y/hBjb+rs4mYkfFDJdypGVr1lR0ApmWyXxbCX951zDIUeM85+7NOgrg5R2 PxVg== X-Gm-Message-State: AJIora+0A3iFI/P/1YXoMT+mx/qRSsNYLn53Zu5bVhaOJfs/jqbZoI95 JGNDdjmwcr3DhWUo+YHOVU4yXsD+wFqKgQ== X-Google-Smtp-Source: AGRyM1vvc9wuaPdNI+ZKXc02gZOytyrEue8K4fD4GLIqCD67zgwy9LznJHs2B6zFxo7a8X3mfQLuUw== X-Received: by 2002:a05:600c:b46:b0:3a0:4a51:bb1d with SMTP id k6-20020a05600c0b4600b003a04a51bb1dmr11352117wmr.168.1656612032096; Thu, 30 Jun 2022 11:00:32 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id v13-20020a1cf70d000000b0039747cf8354sm7363985wmh.39.2022.06.30.11.00.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Jun 2022 11:00:31 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBC?= =?utf-8?b?amFybWFzb24=?= Subject: [PATCH 08/11] checkout: add a missing clear_unpack_trees_porcelain() Date: Thu, 30 Jun 2022 20:00:18 +0200 Message-Id: X-Mailer: git-send-email 2.37.0.874.g7d3439f13c4 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org In 1c41d2805e4 (unpack_trees_options: free messages when done, 2018-05-21) we started calling clear_unpack_trees_porcelain() on this codepath, but missed this error path, let's also clear what we've allocated in that case. Signed-off-by: Ævar Arnfjörð Bjarmason --- builtin/checkout.c | 1 + 1 file changed, 1 insertion(+) diff --git a/builtin/checkout.c b/builtin/checkout.c index 2eefda81d8c..3d6762106e8 100644 --- a/builtin/checkout.c +++ b/builtin/checkout.c @@ -750,6 +750,7 @@ static int merge_working_tree(const struct checkout_opts *opts, refresh_cache(REFRESH_QUIET); if (unmerged_cache()) { + clear_unpack_trees_porcelain(&topts); error(_("you need to resolve your current index first")); return 1; } From patchwork Thu Jun 30 18:00:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12902059 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C74E5C433EF for ; Thu, 30 Jun 2022 18:00:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236502AbiF3SAt (ORCPT ); Thu, 30 Jun 2022 14:00:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49112 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236329AbiF3SAe (ORCPT ); Thu, 30 Jun 2022 14:00:34 -0400 Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com [IPv6:2a00:1450:4864:20::429]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BDAB82AE37 for ; Thu, 30 Jun 2022 11:00:33 -0700 (PDT) Received: by mail-wr1-x429.google.com with SMTP id o4so24504536wrh.3 for ; Thu, 30 Jun 2022 11:00:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=X8qlx5O+l0l0/i1CTDATQMorD1xC/Z/9bWF8zP1ZvK0=; b=QEADpllCYc5r7cMAQkoWt8Kfvd6jwsnYUXR0iF96Dq27AQRc6aa1dujkQfyiq+pYO/ 7NtuS0i4iuRfPesCe0S+93LmMdh6vKIva9VQzdzL+EHiyu2F7BLDBDG4nx2eI+xK/80y HKFfDcm3CGN3FakxL3b8qNw1wcNkqTYXKQXTvQeV7BWzPQegcJX5n12fQdg33kO1c+Qi 7uJuHArcRsdHiS4bW90FdXsS3BpqSCxIm5otnIOW2i5wwgY72T0KsSXl7HPvnqqcQBBS wT/o5FGugBR37foPVww68BOSw4FLeH2MUzLjLjR2Q/3LEpPA/4TIQ6+y969HTiN7yz40 eNyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=X8qlx5O+l0l0/i1CTDATQMorD1xC/Z/9bWF8zP1ZvK0=; b=QUugs4Sp3Z/35iRm/KzwPwc+AuM/wTDt55FB7L2gCd7Q4uGhLXWfkJDIN2cnMv8nph hxfi0X4JhuJkK9a+KYwvlqI3dXLcUf/8HtTt4NzLqDwXaTqZ8+AviBjSa5s0urLGO3Y9 B3e8T4ycz6BqSFJV2dJdAZ7P55n9zDK7xMzBCtnbcx/xKjxsBmV1qCyzWbcXziZEO/BU Z6suDdwc9SVDHtZPFCx4l2iTjW5ki0nvcvJRvQVSVhGkRKI9RyHyDbvyEOvZ8pkEgghZ 0PML5NexBhWy963ISES8T1bwrS/jX5mJ/e1i8RMpeGOxcXS+hWNbKeKrSJk+CTwt6nCT 4hng== X-Gm-Message-State: AJIora+liFQ6mmv7TCjCOLMZs/QefcmHvU+RXL8OVyeR8hpLccXEOKJN Cv2d5vCecN+YQk34QUNOcAs2QIl2gEo5uw== X-Google-Smtp-Source: AGRyM1tiVGOTJ037B7a7vImC6toTH+dfDDarcYrRH2n9EjfURbeG4GgFdQ4TQLnTOsMrNF4k+7OPfA== X-Received: by 2002:a05:6000:1f05:b0:21b:a1b6:1829 with SMTP id bv5-20020a0560001f0500b0021ba1b61829mr9605682wrb.697.1656612033053; Thu, 30 Jun 2022 11:00:33 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id v13-20020a1cf70d000000b0039747cf8354sm7363985wmh.39.2022.06.30.11.00.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Jun 2022 11:00:32 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBC?= =?utf-8?b?amFybWFzb24=?= Subject: [PATCH 09/11] gc: fix a memory leak Date: Thu, 30 Jun 2022 20:00:19 +0200 Message-Id: X-Mailer: git-send-email 2.37.0.874.g7d3439f13c4 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Fix a memory leak in code added in 41abfe15d95 (maintenance: add pack-refs task, 2021-02-09), we need to call strvec_clear() on the "struct strvec" that we initialized. Signed-off-by: Ævar Arnfjörð Bjarmason --- builtin/gc.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/builtin/gc.c b/builtin/gc.c index 021e9256ae2..eeff2b760e0 100644 --- a/builtin/gc.c +++ b/builtin/gc.c @@ -168,9 +168,15 @@ struct maintenance_run_opts; static int maintenance_task_pack_refs(MAYBE_UNUSED struct maintenance_run_opts *opts) { struct strvec pack_refs_cmd = STRVEC_INIT; + int ret; + strvec_pushl(&pack_refs_cmd, "pack-refs", "--all", "--prune", NULL); - return run_command_v_opt(pack_refs_cmd.v, RUN_GIT_CMD); + ret = run_command_v_opt(pack_refs_cmd.v, RUN_GIT_CMD); + + strvec_clear(&pack_refs_cmd); + + return ret; } static int too_many_loose_objects(void) From patchwork Thu Jun 30 18:00:20 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12902060 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 53885C43334 for ; Thu, 30 Jun 2022 18:00:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236153AbiF3SAv (ORCPT ); Thu, 30 Jun 2022 14:00:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49114 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236445AbiF3SAh (ORCPT ); Thu, 30 Jun 2022 14:00:37 -0400 Received: from mail-wm1-x331.google.com (mail-wm1-x331.google.com [IPv6:2a00:1450:4864:20::331]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0003F2A712 for ; Thu, 30 Jun 2022 11:00:35 -0700 (PDT) Received: by mail-wm1-x331.google.com with SMTP id 205-20020a1c02d6000000b003a03567d5e9so1798130wmc.1 for ; Thu, 30 Jun 2022 11:00:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=zhXF3WFp5fDSkUzKnUVky/oIPtkOTTpID2QAPA/5eCI=; b=kUpMjEbrcfXNUK1G3JaLugmynbR9sGUZnHpr+eJB9FQy+wowJmnvqa8FX39X6g4+hY 99Gq6Fqz95FniN09Q5GXO53I67a8lYiKHrCvOO2T4eTewU6L2LNZeSa8/hqbUHcwKFNV mPrzLk1mqj3ZqV1JMGNKKocainlJK8Bne9Apb/cbNL88UKYkfFV/8MUt/E0fE9q6M1VP 3Qd8g9xMa5/c+8r96GZzSXYFyiqs+f/xidHFQcn951CBaSiXaAm7iXVCKxL+Km7racsd smkmX7Sr6RbCX8oub6OZbKwuEUdQKUBscWbzhf3R2YA1gdnLgxZOpx4/XzuRkQufNNZy axgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=zhXF3WFp5fDSkUzKnUVky/oIPtkOTTpID2QAPA/5eCI=; b=FXefuFRO/Iun2uvoI7chgFxeq6VHgMEornr9TNtL35wO29+Yeg0tJ0lPsYk6WqWRIT xaF6TyB1QQU5urTBz7IIMNmBg0hSxZ51SpuHML6XNZhSSaHOMlXE+Bes4CLbL0s8L36E VO8OB1NESz8KgG6KHUFBjn/VlH76g27q025TbbtEUDQ0Q4/G3wxKhgSfuhwmUZOvaWHo qVb5M0pq5iw2eICyzXar2HbDMH6EJ9xMCA+L7ri4XuhkJJNyPD9wB7Y1lxRkocWINykh f0Uu6Cydpw/E8zF5FXd+C9OlEYWL6VBLGk5sG65RLKwRhD20RURJ3reOPrh4UiUjZuIA GP8Q== X-Gm-Message-State: AJIora9r8OgRAkyRTMFORjL6lukg7bwq4jJHwE4BjQak+0d5pV2136Sm 3LHEwxk0iCKGxvAok2QTKqtccMUujabcaw== X-Google-Smtp-Source: AGRyM1ujkjH5laIzS/dT/qOOwG81Rbog4km+I6TRDV9Zf05hL0SXn664W6+RmWkXQXCROL4iKj/DJQ== X-Received: by 2002:a05:600c:2189:b0:3a1:887d:fe0e with SMTP id e9-20020a05600c218900b003a1887dfe0emr1092597wme.116.1656612033964; Thu, 30 Jun 2022 11:00:33 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id v13-20020a1cf70d000000b0039747cf8354sm7363985wmh.39.2022.06.30.11.00.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Jun 2022 11:00:33 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBC?= =?utf-8?b?amFybWFzb24=?= Subject: [PATCH 10/11] cat-file: fix a common "struct object_context" memory leak Date: Thu, 30 Jun 2022 20:00:20 +0200 Message-Id: X-Mailer: git-send-email 2.37.0.874.g7d3439f13c4 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Fix a memory leak where "cat-file" will leak the "path" member. See e5fba602e59 (textconv: support for cat_file, 2010-06-15) for the code that introduced the offending get_oid_with_context() call (called get_sha1_with_context() at the time). As a result we can mark several tests as passing with SANITIZE=leak using "TEST_PASSES_SANITIZE_LEAK=true". As noted in dc944b65f1d (get_sha1_with_context: dynamically allocate oc->path, 2017-05-19) callers must free the "path" member. That same commit added the relevant free() to this function, but we weren't catching cases where we'd return early. Signed-off-by: Ævar Arnfjörð Bjarmason --- builtin/cat-file.c | 32 +++++++++++++++++++--------- t/t0028-working-tree-encoding.sh | 1 + t/t1051-large-conversion.sh | 2 ++ t/t3304-notes-mixed.sh | 1 + t/t4044-diff-index-unique-abbrev.sh | 2 ++ t/t4140-apply-ita.sh | 1 + t/t5314-pack-cycle-detection.sh | 4 ++-- t/t6422-merge-rename-corner-cases.sh | 1 + t/t8007-cat-file-textconv.sh | 2 ++ t/t8010-cat-file-filters.sh | 2 ++ t/t9104-git-svn-follow-parent.sh | 1 - t/t9132-git-svn-broken-symlink.sh | 1 - t/t9301-fast-import-notes.sh | 1 + 13 files changed, 37 insertions(+), 14 deletions(-) diff --git a/builtin/cat-file.c b/builtin/cat-file.c index ac0459f96be..f42782e955f 100644 --- a/builtin/cat-file.c +++ b/builtin/cat-file.c @@ -71,6 +71,7 @@ static int stream_blob(const struct object_id *oid) static int cat_one_file(int opt, const char *exp_type, const char *obj_name, int unknown_type) { + int ret; struct object_id oid; enum object_type type; char *buf; @@ -106,7 +107,8 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name, if (sb.len) { printf("%s\n", sb.buf); strbuf_release(&sb); - return 0; + ret = 0; + goto cleanup; } break; @@ -115,7 +117,8 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name, if (oid_object_info_extended(the_repository, &oid, &oi, flags) < 0) die("git cat-file: could not get object info"); printf("%"PRIuMAX"\n", (uintmax_t)size); - return 0; + ret = 0; + goto cleanup; case 'e': return !has_object_file(&oid); @@ -123,8 +126,10 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name, case 'w': if (filter_object(path, obj_context.mode, - &oid, &buf, &size)) - return -1; + &oid, &buf, &size)) { + ret = -1; + goto cleanup; + } break; case 'c': @@ -143,11 +148,14 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name, const char *ls_args[3] = { NULL }; ls_args[0] = "ls-tree"; ls_args[1] = obj_name; - return cmd_ls_tree(2, ls_args, NULL); + ret = cmd_ls_tree(2, ls_args, NULL); + goto cleanup; } - if (type == OBJ_BLOB) - return stream_blob(&oid); + if (type == OBJ_BLOB) { + ret = stream_blob(&oid); + goto cleanup; + } buf = read_object_file(&oid, &type, &size); if (!buf) die("Cannot read object %s", obj_name); @@ -172,8 +180,10 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name, } else oidcpy(&blob_oid, &oid); - if (oid_object_info(the_repository, &blob_oid, NULL) == OBJ_BLOB) - return stream_blob(&blob_oid); + if (oid_object_info(the_repository, &blob_oid, NULL) == OBJ_BLOB) { + ret = stream_blob(&blob_oid); + goto cleanup; + } /* * we attempted to dereference a tag to a blob * and failed; there may be new dereference @@ -193,9 +203,11 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name, die("git cat-file %s: bad file", obj_name); write_or_die(1, buf, size); + ret = 0; +cleanup: free(buf); free(obj_context.path); - return 0; + return ret; } struct expand_data { diff --git a/t/t0028-working-tree-encoding.sh b/t/t0028-working-tree-encoding.sh index 82905a2156f..416eeabdb94 100755 --- a/t/t0028-working-tree-encoding.sh +++ b/t/t0028-working-tree-encoding.sh @@ -5,6 +5,7 @@ test_description='working-tree-encoding conversion via gitattributes' GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME +TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh . "$TEST_DIRECTORY/lib-encoding.sh" diff --git a/t/t1051-large-conversion.sh b/t/t1051-large-conversion.sh index 042b0e44292..f6709c9f569 100755 --- a/t/t1051-large-conversion.sh +++ b/t/t1051-large-conversion.sh @@ -1,6 +1,8 @@ #!/bin/sh test_description='test conversion filters on large files' + +TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh set_attr() { diff --git a/t/t3304-notes-mixed.sh b/t/t3304-notes-mixed.sh index 03dfcd3954c..2c3a2452668 100755 --- a/t/t3304-notes-mixed.sh +++ b/t/t3304-notes-mixed.sh @@ -5,6 +5,7 @@ test_description='Test notes trees that also contain non-notes' GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME +TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh number_of_commits=100 diff --git a/t/t4044-diff-index-unique-abbrev.sh b/t/t4044-diff-index-unique-abbrev.sh index 4701796d10e..29e49d22902 100755 --- a/t/t4044-diff-index-unique-abbrev.sh +++ b/t/t4044-diff-index-unique-abbrev.sh @@ -1,6 +1,8 @@ #!/bin/sh test_description='test unique sha1 abbreviation on "index from..to" line' + +TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh test_expect_success 'setup' ' diff --git a/t/t4140-apply-ita.sh b/t/t4140-apply-ita.sh index c614eaf04cc..b375aca0d74 100755 --- a/t/t4140-apply-ita.sh +++ b/t/t4140-apply-ita.sh @@ -2,6 +2,7 @@ test_description='git apply of i-t-a file' +TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh test_expect_success setup ' diff --git a/t/t5314-pack-cycle-detection.sh b/t/t5314-pack-cycle-detection.sh index 0aec8619e22..73a241743aa 100755 --- a/t/t5314-pack-cycle-detection.sh +++ b/t/t5314-pack-cycle-detection.sh @@ -49,9 +49,9 @@ Then no matter which order we start looking at the packs in, we know that we will always find a delta for "file", because its lookup will always come immediately after the lookup for "dummy". ' -. ./test-lib.sh - +TEST_PASSES_SANITIZE_LEAK=true +. ./test-lib.sh # Create a pack containing the tree $1 and blob $1:file, with # the latter stored as a delta against $2:file. diff --git a/t/t6422-merge-rename-corner-cases.sh b/t/t6422-merge-rename-corner-cases.sh index bf4ce3c63d4..9b65768aed6 100755 --- a/t/t6422-merge-rename-corner-cases.sh +++ b/t/t6422-merge-rename-corner-cases.sh @@ -6,6 +6,7 @@ test_description="recursive merge corner cases w/ renames but not criss-crosses" GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME +TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh . "$TEST_DIRECTORY"/lib-merge.sh diff --git a/t/t8007-cat-file-textconv.sh b/t/t8007-cat-file-textconv.sh index b067983ba1c..c8266f17f14 100755 --- a/t/t8007-cat-file-textconv.sh +++ b/t/t8007-cat-file-textconv.sh @@ -1,6 +1,8 @@ #!/bin/sh test_description='git cat-file textconv support' + +TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh cat >helper <<'EOF' diff --git a/t/t8010-cat-file-filters.sh b/t/t8010-cat-file-filters.sh index 31de4b64dc0..ca04242ca01 100755 --- a/t/t8010-cat-file-filters.sh +++ b/t/t8010-cat-file-filters.sh @@ -1,6 +1,8 @@ #!/bin/sh test_description='git cat-file filters support' + +TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh test_expect_success 'setup ' ' diff --git a/t/t9104-git-svn-follow-parent.sh b/t/t9104-git-svn-follow-parent.sh index 5cf2ef4b8b0..85d735861fc 100755 --- a/t/t9104-git-svn-follow-parent.sh +++ b/t/t9104-git-svn-follow-parent.sh @@ -5,7 +5,6 @@ test_description='git svn fetching' -TEST_FAILS_SANITIZE_LEAK=true . ./lib-git-svn.sh test_expect_success 'initialize repo' ' diff --git a/t/t9132-git-svn-broken-symlink.sh b/t/t9132-git-svn-broken-symlink.sh index 4d8d0584b79..aeceffaf7b0 100755 --- a/t/t9132-git-svn-broken-symlink.sh +++ b/t/t9132-git-svn-broken-symlink.sh @@ -2,7 +2,6 @@ test_description='test that git handles an svn repository with empty symlinks' -TEST_FAILS_SANITIZE_LEAK=true . ./lib-git-svn.sh test_expect_success 'load svn dumpfile' ' svnadmin load "$rawsvnrepo" < X-Patchwork-Id: 12902061 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id DDA0AC43334 for ; Thu, 30 Jun 2022 18:00:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235668AbiF3SAx (ORCPT ); Thu, 30 Jun 2022 14:00:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49244 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236494AbiF3SAi (ORCPT ); Thu, 30 Jun 2022 14:00:38 -0400 Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com [IPv6:2a00:1450:4864:20::32e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 003122AC79 for ; Thu, 30 Jun 2022 11:00:36 -0700 (PDT) Received: by mail-wm1-x32e.google.com with SMTP id o19-20020a05600c4fd300b003a0489f414cso59325wmq.4 for ; Thu, 30 Jun 2022 11:00:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=AhsCgrBaEAT4H1YdmzM9UxknebkvnB/cgI0gXCpajJs=; b=V/bs+huWkZ0E3ri/fpHU2MMYU+I7+tKGTmwIgJqv4Pe2IEHntqToxwBgREvfprpa4O f74tBwjoNqf7fNerFGxfRR4HbSAra4yU2Ms9uGXldTGVsfuzSBIx+P/Q/UxcAnlquXlY Fq9JwnzoYcomXQe3ayAVeSid7664Fp0bOPcw6tTrciYo4UIez+Y4qz168lPEb5CT6QW7 5u8oUa5vRLTgc64hlDZVPQM0uW6KqRMQzj3dKHNA7E3c/6aeh1tTHnk4XY2guUwSu1He ZjJ5oeci91CebLTGjT5/LACvwjjpRCjN6TcabydOPVcO+u4nBOPIfR7qOi2QeZesUuXy VN0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=AhsCgrBaEAT4H1YdmzM9UxknebkvnB/cgI0gXCpajJs=; b=Z3mokk9q4OpfLWpEEeskLImhLH/zV6QlgDPVAmEJcBGKmHteonbV2IXwsDEkj9lAT/ Zw0w7zMZ4A9ofNORvsdgjz6v/0GWj6OYvuC3EpjXfF0Lz+Xg//mUWsX3vCVciflRXDej PTHyCBxmyNr8wfyezW+mjhwPXhUixU4Gd55SGdGVeolBJlK82w8SenEfQzmBFBxgDlvt bQAB2nWIK4EhGbqymQ38mP0oUC79kvYWuarcF2ypNFhy01kC6eHDg/5zDXouwdnG7g+Z iQdUNpOewzrVm1UafBqks0MtM9hY3AnIIHGzal6p3m1GPuBgUmFpSYm5Yr04S3ndEBfW qHXg== X-Gm-Message-State: AJIora9Hxdl2keGOYMBy/iHB3bP/xgmjALXNErdDch0kkq58KrzzAEgy SfGcLeG42j4L9L/fb09YC5xQRksX0tX7tw== X-Google-Smtp-Source: AGRyM1u7Fp8qbv9DF4cVbHu2m09M7WFdduxWMFjBZeFwwXYzeCXvDLygjnGQffBhluV8YmeS6L4CCQ== X-Received: by 2002:a05:600c:3494:b0:3a0:37f0:86ad with SMTP id a20-20020a05600c349400b003a037f086admr11565514wmq.65.1656612034981; Thu, 30 Jun 2022 11:00:34 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id v13-20020a1cf70d000000b0039747cf8354sm7363985wmh.39.2022.06.30.11.00.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Jun 2022 11:00:34 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBC?= =?utf-8?b?amFybWFzb24=?= Subject: [PATCH 11/11] pull: fix a "struct oid_array" memory leak Date: Thu, 30 Jun 2022 20:00:21 +0200 Message-Id: X-Mailer: git-send-email 2.37.0.874.g7d3439f13c4 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Fix a memory leak introduced in 44c175c7a46 (pull: error on no merge candidates, 2015-06-18). As a result we can mark several tests as passing with SANITIZE=leak using "TEST_PASSES_SANITIZE_LEAK=true". Removing the "int ret = 0" assignment added here in a6d7eb2c7a6 (pull: optionally rebase submodules (remote submodule changes only), 2017-06-23) is not a logic error, it could always have been left uninitialized (as "int ret"), now that we'll use the "ret" from the upper scope we can drop the assignment in the "opt_rebase" branch. Signed-off-by: Ævar Arnfjörð Bjarmason --- builtin/pull.c | 16 ++++++++++------ t/t5524-pull-msg.sh | 1 + t/t6417-merge-ours-theirs.sh | 1 + t/t9101-git-svn-props.sh | 1 - 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/builtin/pull.c b/builtin/pull.c index 01155ba67b2..403a24d7ca6 100644 --- a/builtin/pull.c +++ b/builtin/pull.c @@ -990,6 +990,7 @@ int cmd_pull(int argc, const char **argv, const char *prefix) int rebase_unspecified = 0; int can_ff; int divergent; + int ret; if (!getenv("GIT_REFLOG_ACTION")) set_reflog_message(argc, argv); @@ -1100,7 +1101,8 @@ int cmd_pull(int argc, const char **argv, const char *prefix) if (is_null_oid(&orig_head)) { if (merge_heads.nr > 1) die(_("Cannot merge multiple branches into empty head.")); - return pull_into_void(merge_heads.oid, &curr_head); + ret = pull_into_void(merge_heads.oid, &curr_head); + goto cleanup; } if (merge_heads.nr > 1) { if (opt_rebase) @@ -1125,8 +1127,6 @@ int cmd_pull(int argc, const char **argv, const char *prefix) } if (opt_rebase) { - int ret = 0; - struct object_id newbase; struct object_id upstream; get_rebase_newbase_and_upstream(&newbase, &upstream, &curr_head, @@ -1149,12 +1149,16 @@ int cmd_pull(int argc, const char **argv, const char *prefix) recurse_submodules == RECURSE_SUBMODULES_ON_DEMAND)) ret = rebase_submodules(); - return ret; + goto cleanup; } else { - int ret = run_merge(); + ret = run_merge(); if (!ret && (recurse_submodules == RECURSE_SUBMODULES_ON || recurse_submodules == RECURSE_SUBMODULES_ON_DEMAND)) ret = update_submodules(); - return ret; + goto cleanup; } + +cleanup: + oid_array_clear(&merge_heads); + return ret; } diff --git a/t/t5524-pull-msg.sh b/t/t5524-pull-msg.sh index b2be3605f5a..56716e29ddf 100755 --- a/t/t5524-pull-msg.sh +++ b/t/t5524-pull-msg.sh @@ -2,6 +2,7 @@ test_description='git pull message generation' +TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh dollar='$Dollar' diff --git a/t/t6417-merge-ours-theirs.sh b/t/t6417-merge-ours-theirs.sh index 62d1406119e..482b73a998f 100755 --- a/t/t6417-merge-ours-theirs.sh +++ b/t/t6417-merge-ours-theirs.sh @@ -4,6 +4,7 @@ test_description='Merge-recursive ours and theirs variants' GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME +TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh test_expect_success setup ' diff --git a/t/t9101-git-svn-props.sh b/t/t9101-git-svn-props.sh index d043e80fc34..52046e60d51 100755 --- a/t/t9101-git-svn-props.sh +++ b/t/t9101-git-svn-props.sh @@ -5,7 +5,6 @@ test_description='git svn property tests' -TEST_FAILS_SANITIZE_LEAK=true . ./lib-git-svn.sh mkdir import