From patchwork Wed Mar 2 17:10:07 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: 12766336 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 96DAFC4332F for ; Wed, 2 Mar 2022 17:10:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243655AbiCBRLN (ORCPT ); Wed, 2 Mar 2022 12:11:13 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55590 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243654AbiCBRLK (ORCPT ); Wed, 2 Mar 2022 12:11:10 -0500 Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com [IPv6:2a00:1450:4864:20::42d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EF6B755BC5 for ; Wed, 2 Mar 2022 09:10:26 -0800 (PST) Received: by mail-wr1-x42d.google.com with SMTP id n14so3830625wrq.7 for ; Wed, 02 Mar 2022 09:10:26 -0800 (PST) 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=kBhrM9/6AP3wQ5oRbfd9Nk5I+0uqjVQstoGUPGX6BTk=; b=bFQl2Vf6sNfZhxz1igmPemr/Q1wQ9mYTe/UQfWhQ2BcEN7uP6PBNVdgkquiF6HmOce 6xtPK99cZ2ki7jxP4HmBeBlwSXg2pxPwGZ4qPw7/1xtRRPo9ZeigH7Cm8v3PS/bKIrvA rNhvPHkhSkONLqJL+6yLnF4cOk4ZuMHb1W/4nvPZNb8Czk6rQxDSeY+yxHn4FEVSIW1+ 6T+1W64SMpDKRqnohL4ayK7VSYCj/2pVpWYk3gN/ljvb2dcLfvkn/1SbnXo8fZhwUoBT yCmuuT558iEMfgBG4m5g2xr4/PTXGBooTq4bRtn2AV7pNx+d0r3vCd0AhZZTorPSrOqd h54Q== 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=kBhrM9/6AP3wQ5oRbfd9Nk5I+0uqjVQstoGUPGX6BTk=; b=DJGFpt6A4Mr72ufCbwSHvUampwnnaj/0hRza5O/vhPVVxlITt/KHIh4wWpMliksDiL mHNOJi0TH7TFtf1GvrNadABhZo7cQruGBh6OBPn12g7qB3i7nSgyfQLZ7mLpw7hU+NbA d6UBR3pXt4oWdy9+nkTStJv5tfsy0am+A0IH2I2C6jj0bnSUah1OKdbPXRXuCNY2VewR PXEuzcQGGjm1vhcoVfSVi0g27OB8FnGwZsatzIn8z7fNMloxYjB4xh3+TGVo5e90C2ey uKU2N9QtxqOFFpJBcpmxGz+5akBcU/FtayQOxUxaL3QIn6Z2lhrQtC5u0FwhXpkhsIC0 pOMQ== X-Gm-Message-State: AOAM533RVumwunavy/A4IMV323xI1EdH9BqcEWB5wTe74LJNlus5zv3p FMDvNDxq5Y4T1g9ncM6PypI2GINFkowUDA== X-Google-Smtp-Source: ABdhPJw3vSKyAJ/WtPLErJScedCdRg41v9fHIIbm859vN90oPVJgZQzyyEAtrMGc9yeVva5DOY+qkA== X-Received: by 2002:adf:9581:0:b0:1ed:c341:4ed1 with SMTP id p1-20020adf9581000000b001edc3414ed1mr23745424wrp.299.1646241025230; Wed, 02 Mar 2022 09:10:25 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id p9-20020a05600c1d8900b003813b489d75sm6178001wms.10.2022.03.02.09.10.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 09:10:24 -0800 (PST) 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/14] index-pack: fix memory leaks Date: Wed, 2 Mar 2022 18:10:07 +0100 Message-Id: X-Mailer: git-send-email 2.35.1.1228.g56895c6ee86 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Fix various memory leaks in "git index-pack", due to how tightly coupled this command is with the revision walking this doesn't make any new tests pass, but e.g. this now passes, and had several failures before: ./t5300-pack-object.sh --run=1-2,4,6-27,30-42 it is a bit odd that we'll free "opts.anomaly", since the "opts" is a "struct pack_idx_option" declared in pack.h. In pack-write.c there's a reset_pack_idx_option(), but it only wipes the contents, but doesn't free() anything. Doing this here in cmd_index_pack() is correct because while the struct is declared in pack.h, this code in builtin/index-pack.c (in read_v2_anomalous_offsets()) is what allocates the "opts.anomaly", so we should also free it here. Signed-off-by: Ævar Arnfjörð Bjarmason --- builtin/index-pack.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/builtin/index-pack.c b/builtin/index-pack.c index 3c2e6aee3cc..5fe1adb3681 100644 --- a/builtin/index-pack.c +++ b/builtin/index-pack.c @@ -1109,6 +1109,7 @@ static void *threaded_second_pass(void *data) list_add(&child->list, &work_head); base_cache_used += child->size; prune_base_data(NULL); + free_base_data(child); } else { /* * This child does not have its own children. It may be @@ -1131,6 +1132,7 @@ static void *threaded_second_pass(void *data) p = next_p; } + FREE_AND_NULL(child); } work_unlock(); } @@ -1424,6 +1426,7 @@ static void fix_unresolved_deltas(struct hashfile *f) * object). */ append_obj_to_pack(f, d->oid.hash, data, size, type); + free(data); threaded_second_pass(NULL); display_progress(progress, nr_resolved_deltas); @@ -1703,6 +1706,7 @@ static void show_pack_info(int stat_only) i + 1, chain_histogram[i]); } + free(chain_histogram); } int cmd_index_pack(int argc, const char **argv, const char *prefix) @@ -1932,6 +1936,7 @@ int cmd_index_pack(int argc, const char **argv, const char *prefix) if (do_fsck_object && fsck_finish(&fsck_options)) die(_("fsck error in pack objects")); + free(opts.anomaly); free(objects); strbuf_release(&index_name_buf); strbuf_release(&rev_index_name_buf); From patchwork Wed Mar 2 17:10:08 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: 12766337 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 79A40C433F5 for ; Wed, 2 Mar 2022 17:10:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243660AbiCBRLO (ORCPT ); Wed, 2 Mar 2022 12:11:14 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55650 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241487AbiCBRLL (ORCPT ); Wed, 2 Mar 2022 12:11:11 -0500 Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com [IPv6:2a00:1450:4864:20::42e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C6B7647550 for ; Wed, 2 Mar 2022 09:10:27 -0800 (PST) Received: by mail-wr1-x42e.google.com with SMTP id u1so3802440wrg.11 for ; Wed, 02 Mar 2022 09:10:27 -0800 (PST) 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=Dvx46+SeENqlGoHs+qZJ9oaF+B3m5vw7Era7zwkR4CI=; b=BmzCN4eAmfsV7DWLhJn1npoElbNk7N1GbgEH1PwLqwxnkMdAeRUKuKVHgywpbp7qmO Wecu87dqDBrTe4lc3zJhwahTsFZ/9rtP2nOrQxyD+yPLHQW8Vx3qC+qb4PcNOfKwGvfM Dy1rHxf9Mk8QVZFmQGeDQTodJ+AOS6QL6g5pqbDA32L/RYV5rApexnZczMzGmLYTrnBi 3eS7ow9Oda2+t1ej0FQji7GHr2ZJD3vY9vieQOyGvaxOLTwwVRw/r5E4g7pWPTwfQ9z/ UW+e4DIpvu4bfzJ3Sz3ElGdJGViggDTJJRmNizovmrEjZ2H68HsZ5LKgPIiSyGWBiXOJ FcCA== 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=Dvx46+SeENqlGoHs+qZJ9oaF+B3m5vw7Era7zwkR4CI=; b=jTs/NCbhweYuOnmdcY4+Skn6el1h2u1v5ZzadPEyLlf16QbchLyomi9Ub7O+i8jPrc sFen9k7PC1UGkiBZXFnj0DOEgoUnvh60Je29Aky12dDw6eJrzT8C5yZDb+ZIhjtlK83m OmxhbjnaoAZKxHYkoXncKF07pgriiKeKtuwiiR1GuGYrYcbJ+t8aCUmKaVWeOqwJ/aDF hiP11MNrtLuUV2+wIuOn3KtGo724/GVF8A/d3jiibbCe61Rxv3+h/IWgIf8rtSivENwV ZyzuKaoQaPEYmdM/7bqDpw4C63g8a1De0siSxfmnd4+YSETyeCZMvV+XTlMYDCd0qGuo kpzA== X-Gm-Message-State: AOAM531UCOCxIpZVmIPNOa2HjmJki1GZzKXvyd+QOVKG9YMO8tgjfPh3 tAmSzMA6ABFPhRb5jdpKBV/ESFMPTS05/A== X-Google-Smtp-Source: ABdhPJwAtpSv5cM6MXNKeKaajT/VpYDVlk3SnBQe42dnBWqmc2BFle3rJqXLJq/Yu3jugYc/SCpOVQ== X-Received: by 2002:adf:ed0c:0:b0:1f0:4a32:4d0d with SMTP id a12-20020adfed0c000000b001f04a324d0dmr438098wro.136.1646241026105; Wed, 02 Mar 2022 09:10:26 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id p9-20020a05600c1d8900b003813b489d75sm6178001wms.10.2022.03.02.09.10.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 09:10:25 -0800 (PST) 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/14] merge-base: free() allocated "struct commit **" list Date: Wed, 2 Mar 2022 18:10:08 +0100 Message-Id: X-Mailer: git-send-email 2.35.1.1228.g56895c6ee86 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Fix a memory leak in 53eda89b2fe (merge-base: teach "git merge-base" to drive underlying merge_bases_many(), 2008-07-30) by calling free() on the "struct commit **" list used by "git merge-base". This gets e.g. "t6010-merge-base.sh" closer to passing under SANITIZE=leak, it failed 8 tests before when compiled with that option, and now fails only 5 tests. Signed-off-by: Ævar Arnfjörð Bjarmason --- builtin/merge-base.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/builtin/merge-base.c b/builtin/merge-base.c index 26b84980dbd..a11f8c6e4bb 100644 --- a/builtin/merge-base.c +++ b/builtin/merge-base.c @@ -138,6 +138,7 @@ int cmd_merge_base(int argc, const char **argv, const char *prefix) int rev_nr = 0; int show_all = 0; int cmdmode = 0; + int ret; struct option options[] = { OPT_BOOL('a', "all", &show_all, N_("output all common ancestors")), @@ -186,5 +187,7 @@ int cmd_merge_base(int argc, const char **argv, const char *prefix) ALLOC_ARRAY(rev, argc); while (argc-- > 0) rev[rev_nr++] = get_commit_reference(*argv++); - return show_merge_base(rev, rev_nr, show_all); + ret = show_merge_base(rev, rev_nr, show_all); + free(rev); + return ret; } From patchwork Wed Mar 2 17:10:09 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: 12766338 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 1C858C433EF for ; Wed, 2 Mar 2022 17:10:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243665AbiCBRLQ (ORCPT ); Wed, 2 Mar 2022 12:11:16 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55676 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235296AbiCBRLM (ORCPT ); Wed, 2 Mar 2022 12:11:12 -0500 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 9C7303BBC9 for ; Wed, 2 Mar 2022 09:10:28 -0800 (PST) Received: by mail-wr1-x42f.google.com with SMTP id u10so2201071wra.9 for ; Wed, 02 Mar 2022 09:10:28 -0800 (PST) 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=oqKIUZUV+OWpepECBzlHsaINd2dS3NK9oDdgtW5YWbA=; b=irI/b9vzDe5eXRH83CkHVrJUYZPEjtWw44GBAxOmYKhn9VE9hA2l4pHwAgIhHYwAR5 xYmvRSJwiWLaNAnPquPL6JO0U6drrOTibQMQXK4qAVAAyJo3cnq/qznw8QHtvqRodg1X 7Os4u8EIAawKzROiTzrSco87tam52SIsdMHnQGbKbRHFhkxH1JDQUHn/W7JExsj/oOpi VO1dW1ObwzqZBXc7iVs0btUODWMShXCz84Z/yjoXfMDKmsEM0Oo/EsqofXC/fZh2tNwM LkIXgr2MT9EvxuwlJ2CVb0Az/j2zUE12ij4pX6uaXRCSrj5lbAJL/cFUB7e+JWNNwVdc qgkg== 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=oqKIUZUV+OWpepECBzlHsaINd2dS3NK9oDdgtW5YWbA=; b=Dx5bN6GOzw/O1pXoejqJ2HczhjC3iNsK3T7CUd9D1ywiW9Xffwq352R0VBrHLuf1dG jok41KCx/UXM2bCT3hu7jhwcTsJ3vbgV2APMCmQsT1U3PhckTTNnxQqNBvc7ir1SQO04 gyd6SYqwX8pvuomDQj4e4RRwECbpPYCRYCKnigJav1bGBFsepvpk1sVSfv9jkBtSUM89 4BLTnyNW9VgFdpVI8sWQz7grvbX4pxSsqhGmBtA9TPAzf9IBwJJY7YIo9l318d4zXZ0p qoZXRDdRyFMjdMFCvKUbgoGQ1GTbLSmNcqV4Jib4nqu/S9Kl7JbqkbIo8NYpg2yqE+pC kURA== X-Gm-Message-State: AOAM531bo4iH5fW/0WBfSDo+JzslNOetQEfnw5yYYinXj6Tz8feXzHvn UW1sVAOw4XzUtxh3nxhS9gFhos3qk7wVYw== X-Google-Smtp-Source: ABdhPJw+o12FA6Wue5rJDeS8nrklBfUny9rKlhSGG/eQXmjr/8UYDAHhRVx1ZRTyaCfDVAjo+PBW3Q== X-Received: by 2002:adf:edc3:0:b0:1ec:5f11:5415 with SMTP id v3-20020adfedc3000000b001ec5f115415mr21881381wro.317.1646241026876; Wed, 02 Mar 2022 09:10:26 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id p9-20020a05600c1d8900b003813b489d75sm6178001wms.10.2022.03.02.09.10.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 09:10:26 -0800 (PST) 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/14] diff.c: free "buf" in diff_words_flush() Date: Wed, 2 Mar 2022 18:10:09 +0100 Message-Id: X-Mailer: git-send-email 2.35.1.1228.g56895c6ee86 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Amend the freeing logic added in e6e045f8031 (diff.c: buffer all output if asked to, 2017-06-29) to free the containing "buf" in addition to its members. Signed-off-by: Ævar Arnfjörð Bjarmason --- diff.c | 1 + 1 file changed, 1 insertion(+) diff --git a/diff.c b/diff.c index c4ccb6b1a34..c5bc9bc5128 100644 --- a/diff.c +++ b/diff.c @@ -2150,6 +2150,7 @@ static void diff_words_flush(struct emit_callback *ecbdata) for (i = 0; i < wol->nr; i++) free((void *)wol->buf[i].line); + free(wol->buf); wol->nr = 0; } From patchwork Wed Mar 2 17:10:10 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: 12766340 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 6218DC433F5 for ; Wed, 2 Mar 2022 17:10:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243670AbiCBRLT (ORCPT ); Wed, 2 Mar 2022 12:11:19 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55856 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243657AbiCBRLN (ORCPT ); Wed, 2 Mar 2022 12:11:13 -0500 Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com [IPv6:2a00:1450:4864:20::334]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8CF1040936 for ; Wed, 2 Mar 2022 09:10:29 -0800 (PST) Received: by mail-wm1-x334.google.com with SMTP id p184-20020a1c29c1000000b0037f76d8b484so1662194wmp.5 for ; Wed, 02 Mar 2022 09:10:29 -0800 (PST) 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=Gc3ut0ZvXd8IXWygrBAOEm8lNr2zlrd79hP19IRsVJw=; b=Ac9tKtw18iTcUZerALE1vGr9aLEM8QYPEpgBhFuIlH0i7h0IaBthNH1oJ7lhH4YIeP iHDWde/s+Kvjf+gWcaC0cbWmpq2SsNKeDaQmFdjOwEYJeKjPnOMl10jRshx4/ozhKFwQ MGDNEUfIHWCIz/OihVktUns3bhPW6rzwxqBggUvpepwlCEc1aKaylbkrl37GMXo8wf5T d1SlLUApAXCDJ0hf2c6L0Zb2IipAW7IDdFmy1VDuMIsNmAGxbLeK8KDxXjwUuKgzRz+c oO5orecP2R+tFeiZSfFqFev59jbV+HhBXzgTU0CeQFCWVLkTNLg6JvPGtHBQcY/8Vueg cuKA== 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=Gc3ut0ZvXd8IXWygrBAOEm8lNr2zlrd79hP19IRsVJw=; b=RUo/Sbg8GE/mCA/yLa+tZnXARN//WO/o/UNqiAxcbURV2kIJBMNJ1N3KlbHVNnorgq wkDs/ZTVFrwfNFAqBf/pv9tlGbMD+dqv1QArEa/fzae+hUYwycNrlMpS86Lv0TuFzc53 9XFjsJqy3i81hffEqgrsQU80KPwa5hXq0U8IZVtb5jn1kj9/+UGjrmhiz0L5MZ4xPhqL VUUdMhZZ1BJp3ebjxk566ra0pUKmkA/6t8UnGCg7jO+2MeaXlvbYa59MV+qvxSrG2Lpq vxr+EVHS//qBpc50eDYYZz5KUShzfSNLrkozSosKOkpYiOv+Aiqcl/oICr/+Q4IfZrKU K4Jw== X-Gm-Message-State: AOAM530Oo9o/V+Vtk2CmJA1qOmHGZnRaGmKE+aDFbX8gRxXj7+OLNY5P xPzdWD1WjVnWpv/2/JL2Ba7zSjnWLsRNDQ== X-Google-Smtp-Source: ABdhPJyfu6V1/AgcR/f+N+rlUwLjRBCPunxXaHu8D5nYMeLT4PXO/MBBTcWluTP2SfGeDm+mgcQa8A== X-Received: by 2002:a7b:c216:0:b0:381:21f4:4965 with SMTP id x22-20020a7bc216000000b0038121f44965mr605102wmi.167.1646241027812; Wed, 02 Mar 2022 09:10:27 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id p9-20020a05600c1d8900b003813b489d75sm6178001wms.10.2022.03.02.09.10.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 09:10:27 -0800 (PST) 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/14] urlmatch.c: add and use a *_release() function Date: Wed, 2 Mar 2022 18:10:10 +0100 Message-Id: X-Mailer: git-send-email 2.35.1.1228.g56895c6ee86 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Plug a memory leak in credential_apply_config() by adding and using a new urlmatch_config_release() function. This just does a string_list_clear() on the "vars" member. This finished up work on normalizing the init/free pattern in this API, started in 73ee449bbf2 (urlmatch.[ch]: add and use URLMATCH_CONFIG_INIT, 2021-10-01). Signed-off-by: Ævar Arnfjörð Bjarmason --- builtin/config.c | 2 +- credential.c | 1 + urlmatch.c | 5 +++++ urlmatch.h | 1 + 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/builtin/config.c b/builtin/config.c index 542d8d02b2b..ebec61868be 100644 --- a/builtin/config.c +++ b/builtin/config.c @@ -612,7 +612,7 @@ static int get_urlmatch(const char *var, const char *url) strbuf_release(&matched->value); } - string_list_clear(&config.vars, 1); + urlmatch_config_release(&config); string_list_clear(&values, 1); free(config.url.url); diff --git a/credential.c b/credential.c index e7240f3f636..f6389a50684 100644 --- a/credential.c +++ b/credential.c @@ -130,6 +130,7 @@ static void credential_apply_config(struct credential *c) git_config(urlmatch_config_entry, &config); string_list_clear(&config.vars, 1); free(normalized_url); + urlmatch_config_release(&config); strbuf_release(&url); c->configured = 1; diff --git a/urlmatch.c b/urlmatch.c index 03ad3f30a9c..b615adc923a 100644 --- a/urlmatch.c +++ b/urlmatch.c @@ -611,3 +611,8 @@ int urlmatch_config_entry(const char *var, const char *value, void *cb) strbuf_release(&synthkey); return retval; } + +void urlmatch_config_release(struct urlmatch_config *config) +{ + string_list_clear(&config->vars, 1); +} diff --git a/urlmatch.h b/urlmatch.h index 34a3ba6d197..9f40b00bfb8 100644 --- a/urlmatch.h +++ b/urlmatch.h @@ -71,5 +71,6 @@ struct urlmatch_config { } int urlmatch_config_entry(const char *var, const char *value, void *cb); +void urlmatch_config_release(struct urlmatch_config *config); #endif /* URL_MATCH_H */ From patchwork Wed Mar 2 17:10: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: 12766339 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 E7BF3C433FE for ; Wed, 2 Mar 2022 17:10:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243668AbiCBRLR (ORCPT ); Wed, 2 Mar 2022 12:11:17 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55934 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243659AbiCBRLO (ORCPT ); Wed, 2 Mar 2022 12:11:14 -0500 Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com [IPv6:2a00:1450:4864:20::334]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 70A2B4C7AF for ; Wed, 2 Mar 2022 09:10:30 -0800 (PST) Received: by mail-wm1-x334.google.com with SMTP id a5-20020a05600c224500b003832be89f25so1683447wmm.2 for ; Wed, 02 Mar 2022 09:10:30 -0800 (PST) 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=+HG9Hm146CEQQjR32qq3KjXs0RGFYK03/Q7VHDWUO3I=; b=PWQt9h4AQEP6WprnWNPz1QL7nQc1Bevij9h3jsPVsxiAZgH/ChsQNbV/K4bqS4B2fD X3Xqfd12ZU536FeOZFNN0NSm8mAo0s0fu//xUrO5QE90SPjJpEqhnLr7lV6xc28EHk2Z XmkOfC2MknYYys4mDGuL4+FHQ+6R5dWQ22ePNzgmHVyPFRTTgvCQenPB5O6yF1hIsNkB cMA3tBTujwvwQ3sMeIONJmGUQXqdl+mGa5J6w8+rGnr8qDKXE23LRjejUT6HLEH1CkEz AnIGOFqM/CzTa4CjX3GzgsYT+kPEPAiRpn8xTXCAazvSoPCfPsU+16XQoXTw2p+ZntMF tkoA== 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=+HG9Hm146CEQQjR32qq3KjXs0RGFYK03/Q7VHDWUO3I=; b=s6cMpLtbYxvKDsUotYmfZ7qxzSoRB3L8YqyyP3Y7xJLb46BfXteGkUrV3G3N5yYGWq 8OVkyPBxVsVhNLYduyucPTmo+tPGMY1FZ00vXy3o8zW7AnIwoQ/Z8AV32WkNUR7zNKyC mxzIBtrCG9/m9hLKrIClZ3wSz4E5sLJIz8muakqCxPIuzzeLwJr98UDaTJYUyDv0aitI RbdFJPX7GwifU/IGgE59XGRTjUwigz2P020c3luM7/YcPZQykhoMFDUj9FBHI4kKpWiT LZkdlA3lBI7Sr8ejtkmE5Zy2jEnCIKtYZEzOXDlp8D44rfOdbIEA/nZ2mVHMdVAsAqS0 6jTg== X-Gm-Message-State: AOAM533TB0UUd4Niys88JzslWxn5Bm+voluoEX/dZAGw6+1tAFkyKwOU xrIijDlijAQjh7T1DcgYS7YNDdp9j426sA== X-Google-Smtp-Source: ABdhPJz0szF0XcEFgvXFGZWghfjWBgp2UM3exBO6uBaI+txBYd4Qf0g/APg1/NhKHf8PKNopS7R44Q== X-Received: by 2002:a05:600c:4f04:b0:381:6ea1:8d7 with SMTP id l4-20020a05600c4f0400b003816ea108d7mr618881wmq.164.1646241028807; Wed, 02 Mar 2022 09:10:28 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id p9-20020a05600c1d8900b003813b489d75sm6178001wms.10.2022.03.02.09.10.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 09:10:28 -0800 (PST) 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/14] remote-curl.c: free memory in cmd_main() Date: Wed, 2 Mar 2022 18:10:11 +0100 Message-Id: X-Mailer: git-send-email 2.35.1.1228.g56895c6ee86 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Plug a trivial memory leak in code added in a2d725b7bdf (Use an external program to implement fetching with curl, 2009-08-05). To do this have the cmd_main() use a "goto cleanup" pattern, and to return an error of 1 unless we can fall through to the http_cleanup() at the end. Signed-off-by: Ævar Arnfjörð Bjarmason --- remote-curl.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/remote-curl.c b/remote-curl.c index 0dabef2dd7c..ff44f41011e 100644 --- a/remote-curl.c +++ b/remote-curl.c @@ -1472,11 +1472,12 @@ int cmd_main(int argc, const char **argv) { struct strbuf buf = STRBUF_INIT; int nongit; + int ret = 1; setup_git_directory_gently(&nongit); if (argc < 2) { error(_("remote-curl: usage: git remote-curl []")); - return 1; + goto cleanup; } options.verbosity = 1; @@ -1508,7 +1509,7 @@ int cmd_main(int argc, const char **argv) if (strbuf_getline_lf(&buf, stdin) == EOF) { if (ferror(stdin)) error(_("remote-curl: error reading command stream from git")); - return 1; + goto cleanup; } if (buf.len == 0) break; @@ -1556,12 +1557,15 @@ int cmd_main(int argc, const char **argv) break; } else { error(_("remote-curl: unknown command '%s' from git"), buf.buf); - return 1; + goto cleanup; } strbuf_reset(&buf); } while (1); http_cleanup(); + ret = 0; +cleanup: + strbuf_release(&buf); - return 0; + return ret; } From patchwork Wed Mar 2 17:10: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: 12766341 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 737EDC433EF for ; Wed, 2 Mar 2022 17:10:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243666AbiCBRLW (ORCPT ); Wed, 2 Mar 2022 12:11:22 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56022 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243656AbiCBRLP (ORCPT ); Wed, 2 Mar 2022 12:11:15 -0500 Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com [IPv6:2a00:1450:4864:20::336]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 52FB35DE77 for ; Wed, 2 Mar 2022 09:10:31 -0800 (PST) Received: by mail-wm1-x336.google.com with SMTP id y5so1599357wmi.0 for ; Wed, 02 Mar 2022 09:10:31 -0800 (PST) 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=uFTRjv+Tp9GmqiVW02D61xwhBz+MzgqN6vtzFCFWDn0=; b=fuvGJoB0m/bW/w7y6wlFeL+uPeo3w7pls8AJQ22ChaBhAfxBzBZpAsVLfPFUkrV9ms GlSO9u+ALIZnKQLxSxRe3k0/nAR4eSbHrIuCoPSA3WrwE1cRxaw4b4S//IEevdK2OZo7 bPnXSSaVqOBd88Hb7IrKE30vhbfWR4gzY2rYwF/AJQjK3cEaEgRwJwFP7S7VaYN0FXNQ ahkkOf8dqE8laVFCTETwyU1e2YagAHVlrhfCQYLa5aSAhjgSUfi5sbOpAqA//w6Wy4VZ VWP9vPheKgkUsLxL4uGgcQ7Edrf7+tiqkjI9nQYgI2KBbwOwQBbOutJk4YcFAPx9Tp2n /LeQ== 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=uFTRjv+Tp9GmqiVW02D61xwhBz+MzgqN6vtzFCFWDn0=; b=wtEp7HHQS6RSIanpOWll7r5jFafgsjTGjomPn7iAIakdTlmenlZjns54EQW5+aa40F h9vif00Ssa0yUHzXw2d15zeDsEW9CanrljSSPx6C3M0fFA6dQQIIFN4CP69N97iw8/8I 902GleVoKAse26ySlKViOdmSzQVZ8YZLnInOLzN9b8eVizdweX9b/rMBFRF1MeuyjS6f 1P81K/fzwNAM+9VIVkwQJuiL9wqtqYSlLl2a7CAmS9UhtG3aXBsmN6AuACdpoQANPrU6 AUORDZUvJu+JZ7/Hkho3VUmjj1c5AgJEZC0Ee+whhNMwWoBGfG+JAZEMWz40WQwko9go 0QGQ== X-Gm-Message-State: AOAM533XyfFQ4lo7+Rv5TXDMwmUqllgdS9GAukZRpopLKZul0Vl6zlyw D2eNUzMdQyLou9wyfdI7iRYuZoeb+497FQ== X-Google-Smtp-Source: ABdhPJy2pcd6k0k8e8yLvNOcs1ZgPG2RJ8x0bGDsw1zeRTbFDmCywncqBLTKqTKTnKNMh/uQkUMafA== X-Received: by 2002:a7b:cb8a:0:b0:386:26b5:f9a8 with SMTP id m10-20020a7bcb8a000000b0038626b5f9a8mr623375wmi.55.1646241029697; Wed, 02 Mar 2022 09:10:29 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id p9-20020a05600c1d8900b003813b489d75sm6178001wms.10.2022.03.02.09.10.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 09:10:29 -0800 (PST) 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/14] bundle: call strvec_clear() on allocated strvec Date: Wed, 2 Mar 2022 18:10:12 +0100 Message-Id: X-Mailer: git-send-email 2.35.1.1228.g56895c6ee86 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Fixing this small memory leak in cmd_bundle_create() gets "t5607-clone-bundle.sh" closer to passing under SANITIZE=leak. Signed-off-by: Ævar Arnfjörð Bjarmason --- builtin/bundle.c | 1 + 1 file changed, 1 insertion(+) diff --git a/builtin/bundle.c b/builtin/bundle.c index 5a85d7cd0fe..2adad545a2e 100644 --- a/builtin/bundle.c +++ b/builtin/bundle.c @@ -93,6 +93,7 @@ static int cmd_bundle_create(int argc, const char **argv, const char *prefix) { if (!startup_info->have_repository) die(_("Need a repository to create a bundle.")); ret = !!create_bundle(the_repository, bundle_file, argc, argv, &pack_opts, version); + strvec_clear(&pack_opts); free(bundle_file); return ret; } From patchwork Wed Mar 2 17:10: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: 12766343 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 0E942C433EF for ; Wed, 2 Mar 2022 17:10:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243687AbiCBRLZ (ORCPT ); Wed, 2 Mar 2022 12:11:25 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56078 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241487AbiCBRLP (ORCPT ); Wed, 2 Mar 2022 12:11:15 -0500 Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com [IPv6:2a00:1450:4864:20::32a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2B5A5793B6 for ; Wed, 2 Mar 2022 09:10:32 -0800 (PST) Received: by mail-wm1-x32a.google.com with SMTP id i66so1552749wma.5 for ; Wed, 02 Mar 2022 09:10:32 -0800 (PST) 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=KRuOCIhV1ryoVBMNBsoKP/W+0/8xwy5JpZ99TTPpRvQ=; b=ELWIceEKlA/UfLZ/8qj5zB8QGrhARs7DQ00IqugM8anETxBM0kh1VqbHavmmLzdAS7 Fzxkd2tCuL8iiI8HttjTPVja/k/X3zjgETFJTaZW1gKYuE0BCXGfIuNWoFzmD5M7tkLb +Fj4adrCjxpvLJs5uNXEeLgPw5EIyoucYTXP6aUrW/5QOOP/FUSqh6jL6+A8ERPlRMeI TJcVanTslLGzIkRUEB/pYn4sCn/SJIW+XzLUxCqrYKjcGqgJOQuoUEVT49HZpLK9EBMa xyAG0SkOdKx8qQpCc6oI5eZP5KcSkzBo3OE9emaSpaYQkdIL9ODu3Je34uJIyAYL8djN pOYA== 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=KRuOCIhV1ryoVBMNBsoKP/W+0/8xwy5JpZ99TTPpRvQ=; b=Ruk2DE0nu+K3uR59MuABHhDPkEkFdWPlUzwXmgwyvWYfji0UM9J4rGZz+w+wZMhu5b cjBDQqZCp0iRdEk6m2fTsgH+FwRHoOkYuHNEGBI8P/s/MaSYtR2JKfFdCbqacGtW7Y8m ZcigZgat1jKQQdobBE5dYrZYoWmqGSzzTy/LLGZbfRCQeLUtmXWJdL88X94ziNV3G7nc 7aMzObKbk8NX4izpDyOpXWDz6tvPyoLy5T5GDv7qRB17PO3rBMvWEJs67J7gR7cEZSQu h3GGNqX9UP6kbJ5bnUHBOnAM7Nsuy1oRIHwhowpbhl6ypZyK069GZDzmgeQcSQT0kPJh PZ+Q== X-Gm-Message-State: AOAM5334t41QsKYL9tgQ9abyLoiMyBQC5foRy1OYxsbLD93x127D4eRS /JyGuRLIE5XJjHBTf5QucEC62R3bPoFpzQ== X-Google-Smtp-Source: ABdhPJwmusX6cjmMctQtyg5n1AhGNQj5d80sJT0QVViBufZJtRNh2jfTTf81qgHCHB2BRJpv+SS7lQ== X-Received: by 2002:a05:600c:4a02:b0:380:deae:2c2d with SMTP id c2-20020a05600c4a0200b00380deae2c2dmr600265wmp.133.1646241030509; Wed, 02 Mar 2022 09:10:30 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id p9-20020a05600c1d8900b003813b489d75sm6178001wms.10.2022.03.02.09.10.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 09:10:29 -0800 (PST) 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/14] transport: stop needlessly copying bundle header references Date: Wed, 2 Mar 2022 18:10:13 +0100 Message-Id: X-Mailer: git-send-email 2.35.1.1228.g56895c6ee86 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Amend the logic added in fddf2ebe388 (transport: teach all vtables to allow fetch first, 2019-08-21) and save ourselves pointless work in fetch_refs_from_bundle(). The fetch_refs_from_bundle() caller doesn't care about the "struct ref *result" return value of get_refs_from_bundle(), and doesn't need any of the work we were doing in looping over the "data->header.references" in get_refs_from_bundle(). So this change saves us work, and also fixes a memory leak that we had when called from fetch_refs_from_bundle(). The other caller of get_refs_from_bundle() is the "get_refs_list" member we set up for the "struct transport_vtable bundle_vtable". That caller does care about the "struct ref *result" return value. Signed-off-by: Ævar Arnfjörð Bjarmason --- transport.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/transport.c b/transport.c index 253d6671b1f..9a7d32b4b7d 100644 --- a/transport.c +++ b/transport.c @@ -125,6 +125,19 @@ struct bundle_transport_data { unsigned get_refs_from_bundle_called : 1; }; +static void get_refs_from_bundle_inner(struct transport *transport) +{ + struct bundle_transport_data *data = transport->data; + + if (data->fd > 0) + close(data->fd); + data->fd = read_bundle_header(transport->url, &data->header); + if (data->fd < 0) + die(_("could not read bundle '%s'"), transport->url); + + transport->hash_algo = data->header.hash_algo; +} + static struct ref *get_refs_from_bundle(struct transport *transport, int for_push, struct transport_ls_refs_options *transport_options) @@ -136,15 +149,7 @@ static struct ref *get_refs_from_bundle(struct transport *transport, if (for_push) return NULL; - data->get_refs_from_bundle_called = 1; - - if (data->fd > 0) - close(data->fd); - data->fd = read_bundle_header(transport->url, &data->header); - if (data->fd < 0) - die(_("could not read bundle '%s'"), transport->url); - - transport->hash_algo = data->header.hash_algo; + get_refs_from_bundle_inner(transport); for (i = 0; i < data->header.references.nr; i++) { struct string_list_item *e = data->header.references.items + i; @@ -168,8 +173,8 @@ static int fetch_refs_from_bundle(struct transport *transport, if (transport->progress) strvec_push(&extra_index_pack_args, "-v"); - if (!data->get_refs_from_bundle_called) - get_refs_from_bundle(transport, 0, NULL); + if (!data->get_refs_from_bundle_called++) + get_refs_from_bundle_inner(transport); ret = unbundle(the_repository, &data->header, data->fd, &extra_index_pack_args); transport->hash_algo = data->header.hash_algo; From patchwork Wed Mar 2 17:10: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: 12766342 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 22659C433FE for ; Wed, 2 Mar 2022 17:10:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243672AbiCBRLX (ORCPT ); Wed, 2 Mar 2022 12:11:23 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56478 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243671AbiCBRLV (ORCPT ); Wed, 2 Mar 2022 12:11:21 -0500 Received: from mail-wr1-x434.google.com (mail-wr1-x434.google.com [IPv6:2a00:1450:4864:20::434]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6A858C4B53 for ; Wed, 2 Mar 2022 09:10:33 -0800 (PST) Received: by mail-wr1-x434.google.com with SMTP id u1so3802833wrg.11 for ; Wed, 02 Mar 2022 09:10:33 -0800 (PST) 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=34K6Qm7dV1coFuW70L/I/cIbGt3NGNRX8Z7AyHX2ybc=; b=J0CRwnDPuYxABi46kjFjvlnq4xBHMTZHKQberBXT7SLrWT/2gH3+FAg387yggAEwXZ VErWTDU6BLy+iFLH3payVoEAPm78q+5N8sms3z86yxayrjsIsT28aoZXKT4wxxiyApgr uwEVH6fBi8pdxHLpLYJCSE/2WTLTaZ+ZGW+gY3Aq4NVJmlJwPSAxRYCD5BNqWMlK1o3J zcWpwGjd/KzQDQkm54HTi31qy6AGMAOepDxx2N7Zh8KFc/yoWkXbDK6VRmb7Loi0dfJa NedaveJZhWjvikHNXBPKNcVGC3LzGl1xL0bMat6Vt48G+SaMqRxPPrYkrIJUPGikvuYM ubKg== 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=34K6Qm7dV1coFuW70L/I/cIbGt3NGNRX8Z7AyHX2ybc=; b=5eirMcsYI+1OyaNxcg1y90lOu4PdJk2d1DN1WmYXs3AqZb0DS1Xb4CBQ+4jkyCx0NE sXHiVDf5xYFIHpbT3KDYdNpUFMrzwYUpnlwZlUj3TvfBbMSmkEUv9HXaDM/c8ZlccMLz 9jZdcmhHsO5Dv3V4Jl95h5Ajn4KTlIag/fFCTvF6zJo+VEWDa/G4BQ4BHbb/WcnS5biB s5c1+S8GR68WD1AxD62rD453fCBaDAb2hdK3znWhW+mR/TEzJis+ubkrW+vv6GnRN07q SLF+S+Fy7bhiGeSEaV03qxBmgSBQCW0wauz0RGTwltkByodPTOok8gUe5EmJij9zI7P4 3gBw== X-Gm-Message-State: AOAM532V/oPeYIhgbtKQH2ZWP4WzhFVvFl7diZfuqoUU+Kst3lt4OV9I yF2aOiFGtBb1qqJLonj1h6JCW9S2qTNtXA== X-Google-Smtp-Source: ABdhPJzAKfbzt6kjK0EF/J+++Jn447ve1+L2iM7Po7ewRP4bKygf1r0+GTTAlsyELQ0arDgTl16FWg== X-Received: by 2002:adf:cd02:0:b0:1ef:7498:bcbd with SMTP id w2-20020adfcd02000000b001ef7498bcbdmr19449477wrm.278.1646241031391; Wed, 02 Mar 2022 09:10:31 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id p9-20020a05600c1d8900b003813b489d75sm6178001wms.10.2022.03.02.09.10.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 09:10:30 -0800 (PST) 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/14] submodule--helper: fix trivial leak in module_add() Date: Wed, 2 Mar 2022 18:10:14 +0100 Message-Id: X-Mailer: git-send-email 2.35.1.1228.g56895c6ee86 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 a6226fd772b (submodule--helper: convert the bulk of cmd_add() to C, 2021-08-10). If "realrepo" isn't a copy of the "repo" member we should free() it. Signed-off-by: Ævar Arnfjörð Bjarmason --- builtin/submodule--helper.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c index eeacefcc383..13b4841327d 100644 --- a/builtin/submodule--helper.c +++ b/builtin/submodule--helper.c @@ -3309,6 +3309,7 @@ static int module_add(int argc, const char **argv, const char *prefix) { int force = 0, quiet = 0, progress = 0, dissociate = 0; struct add_data add_data = ADD_DATA_INIT; + char *to_free = NULL; struct option options[] = { OPT_STRING('b', "branch", &add_data.branch, N_("branch"), @@ -3360,7 +3361,8 @@ static int module_add(int argc, const char **argv, const char *prefix) "of the working tree")); /* dereference source url relative to parent's url */ - add_data.realrepo = resolve_relative_url(add_data.repo, NULL, 1); + to_free = resolve_relative_url(add_data.repo, NULL, 1); + add_data.realrepo = to_free; } else if (is_dir_sep(add_data.repo[0]) || strchr(add_data.repo, ':')) { add_data.realrepo = add_data.repo; } else { @@ -3413,6 +3415,7 @@ static int module_add(int argc, const char **argv, const char *prefix) } configure_added_submodule(&add_data); free(add_data.sm_path); + free(to_free); return 0; } From patchwork Wed Mar 2 17:10: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: 12766344 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 9A02DC433EF for ; Wed, 2 Mar 2022 17:10:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243677AbiCBRLa (ORCPT ); Wed, 2 Mar 2022 12:11:30 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56480 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243675AbiCBRLV (ORCPT ); Wed, 2 Mar 2022 12:11:21 -0500 Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com [IPv6:2a00:1450:4864:20::334]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0396EC681C for ; Wed, 2 Mar 2022 09:10:33 -0800 (PST) Received: by mail-wm1-x334.google.com with SMTP id i83-20020a1c3b56000000b00386f2897400so275495wma.5 for ; Wed, 02 Mar 2022 09:10:33 -0800 (PST) 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=h/xDviJ1M29vy1LjHsVAMaCCqMy+H2Pt9WxlSYbD0E0=; b=D+ifcwGLYI9JXAJycQM/FfWymz7qWqApU7uIFkGxCouh71TxjMfj+7BBSHSHELfv4K BrvEnneCMWMDpi1CrO6EMVDsP/bDm1XVl5/YSHMkthFhup5k/twLqr88eQTdNtYAzQp2 oeX1mT/3qoAysTbYUFjLGGAL2cc4ESCL1rcLfKxGIcNk0VVVc9Pm1w/1ekdq+4I54pS6 G9QdMbUZ6ybIm4Hm8kRakA1+xR/9o58rvcHDrRyA0Ot4vma4/IMD4KQYKvhGC2kGIZB7 lF+ZtMO4W9g3ZtS4dMnaBdsRb6HVGsVU9wiQUFo60+MvjTRvzCYpDbV2OYiGXsh7thsY 8jeg== 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=h/xDviJ1M29vy1LjHsVAMaCCqMy+H2Pt9WxlSYbD0E0=; b=iaU85rAr2zLaCeGCF4h/q4/Zav8UnHh3jpcuA/pqh1EPDTdkBPTUANSyG7gFNuzLdy QxSnHpfAHnUYK17hhCIqkHOrUtS9ABrJsIIVt0yjKtwtmnAQkaM2Tn7emWbZbvyOWHwd 4CTounG/dOt94KNGnsLo9O7xjgcz5Fb3OSKiYgr9yDpmX4De5SrJgPKmiO7YHlo/oOKC FjUWhUIIVjPliB5UT13HYxK0TT4bffA3FDkNIliND0M35o8ol6p6esBYX0BzdNJFRxUG rLyXTmfzUnp+yo8EKeK4dKhXb9uC/HaskNqkZBQb1iyWLMO6gdmXamWyzfDyWcBas25z slJA== X-Gm-Message-State: AOAM532ixhjWlUweUFiG7kY9lY57Hl6ZmSm8xKcwAnDNwMdIjLeseh8D vYFVijjkoUe6hO+3w25AVdFwbz/lExoaaQ== X-Google-Smtp-Source: ABdhPJyjyAovKRJn1BUf3zyITKT518HtPcKEFWn7gnxG3bQ4W1fy76RwwL/S5CVbZqGmdV3A2lXu0w== X-Received: by 2002:a1c:6a14:0:b0:383:a58c:3635 with SMTP id f20-20020a1c6a14000000b00383a58c3635mr594185wmc.129.1646241032194; Wed, 02 Mar 2022 09:10:32 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id p9-20020a05600c1d8900b003813b489d75sm6178001wms.10.2022.03.02.09.10.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 09:10:31 -0800 (PST) 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/14] commit-graph: fix memory leak in misused string_list API Date: Wed, 2 Mar 2022 18:10:15 +0100 Message-Id: X-Mailer: git-send-email 2.35.1.1228.g56895c6ee86 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org When this code was migrated to the string_list API in d88b14b3fd6 (commit-graph: use string-list API for input, 2018-06-27) it was made to use used both STRING_LIST_INIT_NODUP and a strbuf_detach() pattern. Those should not be used together if string_list_clear() is expected to free the memory, instead we need to either use STRING_LIST_INIT_DUP with a string_list_append_nodup(), or a STRING_LIST_INIT_NODUP and manually fiddle with the "strdup_strings" member before calling string_list_clear(). Let's do the former. Since "strdup_strings = 1" is set now other code might be broken by relying on "pack_indexes" not to duplicate it strings, but that doesn't happen. When we pass this down to write_commit_graph() that code uses the "struct string_list" without modifying it. Let's add a "const" to the variable to have the compiler enforce that assumption. Signed-off-by: Ævar Arnfjörð Bjarmason --- builtin/commit-graph.c | 6 +++--- commit-graph.c | 4 ++-- commit-graph.h | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/builtin/commit-graph.c b/builtin/commit-graph.c index 4247fbde95a..51c4040ea6c 100644 --- a/builtin/commit-graph.c +++ b/builtin/commit-graph.c @@ -192,7 +192,7 @@ static int git_commit_graph_write_config(const char *var, const char *value, static int graph_write(int argc, const char **argv) { - struct string_list pack_indexes = STRING_LIST_INIT_NODUP; + struct string_list pack_indexes = STRING_LIST_INIT_DUP; struct strbuf buf = STRBUF_INIT; struct oidset commits = OIDSET_INIT; struct object_directory *odb = NULL; @@ -273,8 +273,8 @@ static int graph_write(int argc, const char **argv) if (opts.stdin_packs) { while (strbuf_getline(&buf, stdin) != EOF) - string_list_append(&pack_indexes, - strbuf_detach(&buf, NULL)); + string_list_append_nodup(&pack_indexes, + strbuf_detach(&buf, NULL)); } else if (opts.stdin_commits) { oidset_init(&commits, 0); if (opts.progress) diff --git a/commit-graph.c b/commit-graph.c index 265c010122e..d0c94600bab 100644 --- a/commit-graph.c +++ b/commit-graph.c @@ -1679,7 +1679,7 @@ int write_commit_graph_reachable(struct object_directory *odb, } static int fill_oids_from_packs(struct write_commit_graph_context *ctx, - struct string_list *pack_indexes) + const struct string_list *pack_indexes) { uint32_t i; struct strbuf progress_title = STRBUF_INIT; @@ -2259,7 +2259,7 @@ static void expire_commit_graphs(struct write_commit_graph_context *ctx) } int write_commit_graph(struct object_directory *odb, - struct string_list *pack_indexes, + const struct string_list *const pack_indexes, struct oidset *commits, enum commit_graph_write_flags flags, const struct commit_graph_opts *opts) diff --git a/commit-graph.h b/commit-graph.h index 04a94e18302..2e3ac35237e 100644 --- a/commit-graph.h +++ b/commit-graph.h @@ -142,7 +142,7 @@ int write_commit_graph_reachable(struct object_directory *odb, enum commit_graph_write_flags flags, const struct commit_graph_opts *opts); int write_commit_graph(struct object_directory *odb, - struct string_list *pack_indexes, + const struct string_list *pack_indexes, struct oidset *commits, enum commit_graph_write_flags flags, const struct commit_graph_opts *opts); From patchwork Wed Mar 2 17:10: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: 12766345 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 95E2DC433EF for ; Wed, 2 Mar 2022 17:10:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243717AbiCBRLh (ORCPT ); Wed, 2 Mar 2022 12:11:37 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56520 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243683AbiCBRLV (ORCPT ); Wed, 2 Mar 2022 12:11:21 -0500 Received: from mail-wr1-x436.google.com (mail-wr1-x436.google.com [IPv6:2a00:1450:4864:20::436]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C910D5F4ED for ; Wed, 2 Mar 2022 09:10:34 -0800 (PST) Received: by mail-wr1-x436.google.com with SMTP id r10so3851502wrp.3 for ; Wed, 02 Mar 2022 09:10:34 -0800 (PST) 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=PQs9Z3GcyDIx9fOolmCiohM3Y53IaKwUIseiNP7K6mg=; b=FMsdrpqfyJAVvHA7gT7jvTJ39hZORaRgc+GATsSGsfq87a3loMYS5GFrTMhwQmAeyZ P9jpb43hcBxnXNfY9XDRInd1SVw+7TVhSBT2iSEUAhF5ppaB9WN0QjZr+cdZxCj3Ipn7 SqM47OIa+oqVJcj6I6xryzYmG7LSxm1qgooSGBDzZNAFmwUp2qHQxjpbKa9pv1pr7Jyi XRv3VyQ6BraDGGppHwj+cTepU2EFZgpPCDJsEemkG2rfntUSqfUrSo9L9SmxWeNKA22M IsRN8yvtI6npeeZVfapPdKjhIHfh1KlSTQrGXDGEyK1h15VTgpP8E21N3ccy0DIRlklB Iahw== 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=PQs9Z3GcyDIx9fOolmCiohM3Y53IaKwUIseiNP7K6mg=; b=0ZZVZ+UCtfaRxOR9960zQuCdDo+cT6T8jaqr98WMy0jzq7uL89Gx6ML7e9NwP22UI/ 914PXz8uUtDFUf1oKMFpkeP+DExwVYy8uIpy4UVqVcPuwW36O7/nAuFjFkAxlntiB1iY ekIfFzTEt0seBMZPo5QVX5MqrZ1NcW9QXxNnHswOUl95dI6PmSi/NIGhmNPcLKOApxPU AzvRn9veQin3tc9o88RGKlMZrReqdgrHJzoJ04QPd70vxN49Xk8TkhtmvoGIB8KMwmYc znvtD38KYdzzlfSYmaiMlacti7sLP/V20zz60c2UPsqAI9KqwYaXF8u6AEZ/BRlWx3N5 rEEQ== X-Gm-Message-State: AOAM531+xqBeCi67A0rZt5wtdQfAeVZhNAbTaik1HVKnIitOYV1cd+E6 Kjkre7/LEVwwDfI+CtpKEAkH4u7/3IcT+Q== X-Google-Smtp-Source: ABdhPJzobgGP95RK4n6NVWajL+/mofa1cJyfoI10CEpl8KVREeiGIKcpGW3pW4ohR2DnS9RE3KMeyQ== X-Received: by 2002:adf:eb86:0:b0:1e6:8c92:af6b with SMTP id t6-20020adfeb86000000b001e68c92af6bmr23735749wrn.116.1646241033175; Wed, 02 Mar 2022 09:10:33 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id p9-20020a05600c1d8900b003813b489d75sm6178001wms.10.2022.03.02.09.10.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 09:10:32 -0800 (PST) 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/14] commit-graph: stop fill_oids_from_packs() progress on error and free() Date: Wed, 2 Mar 2022 18:10:16 +0100 Message-Id: X-Mailer: git-send-email 2.35.1.1228.g56895c6ee86 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Fix a bug in fill_oids_from_packs(), we should always stop_progress(), but did not do so if we returned an error here. This also plugs a memory leak in those cases by releasing the two "struct strbuf" variables the function uses. While I'm at it stop hardcoding "-1" here and just use the return value of error() instead, which happens to be "-1". Signed-off-by: Ævar Arnfjörð Bjarmason --- commit-graph.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/commit-graph.c b/commit-graph.c index d0c94600bab..aab0b292774 100644 --- a/commit-graph.c +++ b/commit-graph.c @@ -1685,6 +1685,7 @@ static int fill_oids_from_packs(struct write_commit_graph_context *ctx, struct strbuf progress_title = STRBUF_INIT; struct strbuf packname = STRBUF_INIT; int dirlen; + int ret = 0; strbuf_addf(&packname, "%s/pack/", ctx->odb->path); dirlen = packname.len; @@ -1703,12 +1704,12 @@ static int fill_oids_from_packs(struct write_commit_graph_context *ctx, strbuf_addstr(&packname, pack_indexes->items[i].string); p = add_packed_git(packname.buf, packname.len, 1); if (!p) { - error(_("error adding pack %s"), packname.buf); - return -1; + ret = error(_("error adding pack %s"), packname.buf); + goto cleanup; } if (open_pack_index(p)) { - error(_("error opening index for %s"), packname.buf); - return -1; + ret = error(_("error opening index for %s"), packname.buf); + goto cleanup; } for_each_object_in_pack(p, add_packed_commits, ctx, FOR_EACH_OBJECT_PACK_ORDER); @@ -1716,11 +1717,12 @@ static int fill_oids_from_packs(struct write_commit_graph_context *ctx, free(p); } +cleanup: stop_progress(&ctx->progress); strbuf_release(&progress_title); strbuf_release(&packname); - return 0; + return ret; } static int fill_oids_from_commits(struct write_commit_graph_context *ctx, From patchwork Wed Mar 2 17:10: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: 12766346 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 DB4B5C433F5 for ; Wed, 2 Mar 2022 17:10:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243701AbiCBRLi (ORCPT ); Wed, 2 Mar 2022 12:11:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56504 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243684AbiCBRLV (ORCPT ); Wed, 2 Mar 2022 12:11:21 -0500 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 40A18CCC73 for ; Wed, 2 Mar 2022 09:10:36 -0800 (PST) Received: by mail-wr1-x42b.google.com with SMTP id r10so3851610wrp.3 for ; Wed, 02 Mar 2022 09:10:36 -0800 (PST) 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=gtK9acu7P0DFfCP4zSQ9uou/wbZrvbfhEbmK88zj+XA=; b=IzvWE786b1oSDDUmeaPSKBilb+YOnoUwkoLwPaHmqIZu8zB8YUmMUkjhFFHR/6vR3N ou9OqlvsX9K0OCEvPIDWkcfT+mm7HXMb9l6q/qIM+yKDLVHWZb3qA4B4WugDnVAhlQPa rmeHq3/cYKE08rmnXceE7T8RBzFbsnBWYbGuvXuGi4zZUmLQI07SbFwJFhoVAKRmLHnp 3IuenEKusqFQAIFf9z0KdteDNIce7fjvMl8NP8ho6WTsdtUKJnEy9S3bWiUdbZBSk/7k XPJsvLx8lzrNGPv6kxU6jkESAFY+rrWwARKkCSz4SFQjdwWBTInxjNOLIOqz1oSkkg9U kFbg== 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=gtK9acu7P0DFfCP4zSQ9uou/wbZrvbfhEbmK88zj+XA=; b=ZKQ3kAOY/ktdLT3lW/7wX+SWDvIiagmqmozLttH//mMS+AilZXrh4kz4SbM18/LM8c 1HHFty3eG25rPklWExAaMgfcS3oJEX8uO/S4zcLdlhUjiWh6h4zhlTv5du6qOJXxbc4P c04zuhX0jLr9uls/cEBJhevG1gxW/6L2X9q3F6YHs1K2IX0KYzuBdroukH0qT/uoj1ji CtmegNCCs+LO9Y3+NOUb42geAb7TBIjKBcEg38nNuMInrBr7XEFUSEudA2gVBhIja66+ ++8pjX2w3v42ulXgmr5vZB91c1mAnuz0C07WCIN+wowzzWIWny5pm0ul50VYc3Nm7nHS YGHQ== X-Gm-Message-State: AOAM532h9/g1o4wZuVdaDRxGxSXtL9fP4Ss41wjI0hIbIqM+gGkPZDFq rURzFB5U3QNFUkj5/53DLULKKX6zhyurfQ== X-Google-Smtp-Source: ABdhPJxxN0BCoGj8EOYk/yee72xQJZGZ0SPSBztFIhwROnhC26uUyqUk4LtXHtFj+iIaNKWFk9v/Cg== X-Received: by 2002:a5d:4a08:0:b0:1ed:b997:46d8 with SMTP id m8-20020a5d4a08000000b001edb99746d8mr23395699wrq.440.1646241034565; Wed, 02 Mar 2022 09:10:34 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id p9-20020a05600c1d8900b003813b489d75sm6178001wms.10.2022.03.02.09.10.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 09:10:33 -0800 (PST) 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/14] lockfile API users: simplify and don't leak "path" Date: Wed, 2 Mar 2022 18:10:17 +0100 Message-Id: X-Mailer: git-send-email 2.35.1.1228.g56895c6ee86 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 6c622f9f0bb (commit-graph: write commit-graph chains, 2019-06-18). We needed to free the "lock_name" if we encounter errors, and the "graph_name" after we'd run unlink() on it. For the case of write_commit_graph_file() refactoring the code to free the "lock_name" after we were done using the "struct lock_file lk" would have made the control flow more complex. Luckily we can free the "lock_file" right after the hold_lock_file_for_update() call, if it makes use of "path" at all it'll have copied its contents to a "struct strbuf" of its own. While I'm at it let's fix code added in fb10ca5b543 (sparse-checkout: write using lockfile, 2019-11-21) in write_patterns_and_update() to avoid the same complexity that I thought I needed when I wrote the initial fix for write_commit_graph_file(). We can free the "sparse_filename" right after calling hold_lock_file_for_update(), we don't need to wait until we're exiting the function to do so. Signed-off-by: Ævar Arnfjörð Bjarmason --- builtin/sparse-checkout.c | 3 +-- commit-graph.c | 2 ++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/builtin/sparse-checkout.c b/builtin/sparse-checkout.c index 9c338d33ea2..270ad49c2b8 100644 --- a/builtin/sparse-checkout.c +++ b/builtin/sparse-checkout.c @@ -328,11 +328,11 @@ static int write_patterns_and_update(struct pattern_list *pl) fd = hold_lock_file_for_update(&lk, sparse_filename, LOCK_DIE_ON_ERROR); + free(sparse_filename); result = update_working_directory(pl); if (result) { rollback_lock_file(&lk); - free(sparse_filename); clear_pattern_list(pl); update_working_directory(NULL); return result; @@ -348,7 +348,6 @@ static int write_patterns_and_update(struct pattern_list *pl) fflush(fp); commit_lock_file(&lk); - free(sparse_filename); clear_pattern_list(pl); return 0; diff --git a/commit-graph.c b/commit-graph.c index aab0b292774..b8cde7ea27d 100644 --- a/commit-graph.c +++ b/commit-graph.c @@ -1854,6 +1854,7 @@ static int write_commit_graph_file(struct write_commit_graph_context *ctx) hold_lock_file_for_update_mode(&lk, lock_name, LOCK_DIE_ON_ERROR, 0444); + free(lock_name); fd = git_mkstemp_mode(ctx->graph_name, 0444); if (fd < 0) { @@ -1978,6 +1979,7 @@ static int write_commit_graph_file(struct write_commit_graph_context *ctx) } else { char *graph_name = get_commit_graph_filename(ctx->odb); unlink(graph_name); + free(graph_name); } ctx->commit_graph_hash_after[ctx->num_commit_graphs_after - 1] = xstrdup(hash_to_hex(file_hash)); From patchwork Wed Mar 2 17:10: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: 12766347 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 52050C433EF for ; Wed, 2 Mar 2022 17:10:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243685AbiCBRLj (ORCPT ); Wed, 2 Mar 2022 12:11:39 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56788 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243689AbiCBRL2 (ORCPT ); Wed, 2 Mar 2022 12:11:28 -0500 Received: from mail-wr1-x433.google.com (mail-wr1-x433.google.com [IPv6:2a00:1450:4864:20::433]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 55CF2CD325 for ; Wed, 2 Mar 2022 09:10:37 -0800 (PST) Received: by mail-wr1-x433.google.com with SMTP id i8so3827445wrr.8 for ; Wed, 02 Mar 2022 09:10:37 -0800 (PST) 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=lUjwAuWNRyPLWSkiDNzq/v6QrtFpmgzWY00NA9mmtdI=; b=oC05jhlT+R/qqVgobGfVnRCKprhPedXP0kX3vMh1A8hZdqFoRiWoj8FMTmHgdQeJKF xoPG4E/Td1Upz1VV8AUSmmiz9o7b7ok7V9em/Uk/ofCO/mmqugi9rh5aADn14I1FYrJs kpRyDhZU7bR9YUZ3auOvdB2K15cRe+BYzYV9D9PH0Vqb38dFq9Cw7OkJtozuGM9CXQ8x PTvbT6UtRyk3xkG2cBb5Zj3sHFeZttGkRsyBgLB2HWyWnwQxPJTmi5N4VHUKVx9rBT4d pBNjdlEoIzbZpdDJO/30O/c3BFNK382w2JW3tS/fMo6QNC0EyDt+hSv2AFOlD9k5vtSC 5J4A== 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=lUjwAuWNRyPLWSkiDNzq/v6QrtFpmgzWY00NA9mmtdI=; b=l2B1WEqimP8FPFWOkX22bbH5BEbBG7XEs5IYd3RQQzkR2E8akHcUUQR0I2OM70wQXD zkyJj42e6/9VG+tJ0aUemdtqCsATd61vjKb49+8oo5+JaopohOh2/4rO4Q8KuJA3NWHu ZP9WWOadgI0qqoe38jGcT2XGy1k5dVmFEom0zMeObhyCetiIzg8dxdzpY8HSiJYOSCGV yRFeh6Dh8eYP1ZHyhYTg/g4HwoweV9kZQyvGe0wsUSusaJDDCvMACCD6cWnQmsl8+ODL 0+RYKuj/m/JkUbU+3f0JCzmtSkjmLI/ll6vhlunt2oUJp9qPd/7Zd73JYOmck2UowXIv rtIg== X-Gm-Message-State: AOAM530TMpcsuej/L7j/d5zJR8QNEgvTqRI3Jt7e4lQcrRastlpWTvAG qR6MyGRO+seu9oaFS+dMX8d8VS00XL/M9g== X-Google-Smtp-Source: ABdhPJy8bCDUnDf5Btf6NzUhmOilZpMXrG3uICrqL6PGIsM/EVNuEbJkED9ap9npZUVkyzVRa4fhiA== X-Received: by 2002:adf:fbcf:0:b0:1ef:d5f2:23a5 with SMTP id d15-20020adffbcf000000b001efd5f223a5mr11344535wrs.567.1646241035664; Wed, 02 Mar 2022 09:10:35 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id p9-20020a05600c1d8900b003813b489d75sm6178001wms.10.2022.03.02.09.10.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 09:10:34 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBC?= =?utf-8?b?amFybWFzb24=?= Subject: [PATCH 12/14] range-diff: plug memory leak in common invocation Date: Wed, 2 Mar 2022 18:10:18 +0100 Message-Id: X-Mailer: git-send-email 2.35.1.1228.g56895c6ee86 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Create a public release_patch() version of the private free_patch() function added in 13b5af22f39 (apply: move libified code from builtin/apply.c to apply.{c,h}, 2016-04-22). Unlike the existing function this one doesn't free() the "struct patch" itself, so we can use it for variables on the stack. Use it in range-diff.c to fix a memory leak in common range-diff invocations, e.g.: git -P range-diff origin/master origin/next origin/seen Would emit several errors when compiled with SANITIZE=leak, but now runs cleanly. Signed-off-by: Ævar Arnfjörð Bjarmason --- apply.c | 7 ++++++- apply.h | 2 ++ range-diff.c | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/apply.c b/apply.c index 0912307bd91..01f91816428 100644 --- a/apply.c +++ b/apply.c @@ -219,13 +219,18 @@ static void free_fragment_list(struct fragment *list) } } -static void free_patch(struct patch *patch) +void release_patch(struct patch *patch) { free_fragment_list(patch->fragments); free(patch->def_name); free(patch->old_name); free(patch->new_name); free(patch->result); +} + +static void free_patch(struct patch *patch) +{ + release_patch(patch); free(patch); } diff --git a/apply.h b/apply.h index 4052da50c06..b9f18ce87d1 100644 --- a/apply.h +++ b/apply.h @@ -173,6 +173,8 @@ int parse_git_diff_header(struct strbuf *root, unsigned int size, struct patch *patch); +void release_patch(struct patch *patch); + /* * Some aspects of the apply behavior are controlled by the following * bits in the "options" parameter passed to apply_all_patches(). diff --git a/range-diff.c b/range-diff.c index 30a4de5c2d8..b2a2961f521 100644 --- a/range-diff.c +++ b/range-diff.c @@ -165,6 +165,7 @@ static int read_patches(const char *range, struct string_list *list, patch.old_mode, patch.new_mode); strbuf_addstr(&buf, " ##"); + release_patch(&patch); } else if (in_header) { if (starts_with(line, "Author: ")) { strbuf_addstr(&buf, " ## Metadata ##\n"); From patchwork Wed Mar 2 17:10: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: 12766349 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 C667AC433EF for ; Wed, 2 Mar 2022 17:11:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243714AbiCBRLn (ORCPT ); Wed, 2 Mar 2022 12:11:43 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56524 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243697AbiCBRLc (ORCPT ); Wed, 2 Mar 2022 12:11:32 -0500 Received: from mail-wr1-x434.google.com (mail-wr1-x434.google.com [IPv6:2a00:1450:4864:20::434]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 507DECFB8A for ; Wed, 2 Mar 2022 09:10:38 -0800 (PST) Received: by mail-wr1-x434.google.com with SMTP id u1so3803270wrg.11 for ; Wed, 02 Mar 2022 09:10:38 -0800 (PST) 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=/MuljZWG/x+WplVgacAb4xeHTO6lSPdUvWtQFpFdr2g=; b=BZgNdAGzIWCR79MhRdpmj80NTpRx2eV1IimCMWLEgUbhTyaq9YEmFw77qDkTB8shbM Oh7pn8B543qgcpzp0EVUVtnYZnurH6WDHDR5I4O6xgFxMt1pCXzEXTdeHnTi8Vs8IAtM IHGEL2iAREIk2IHGTpIXY4efonpSvljTN/233EzotqnJo67JlpWWArfn+k0m08orlYML NE3hjo/hckMIyx8nxBuPP5OE/+IGNXCYpR0cJOC3/SK7/4OEaXIznqz/NyZIrSvYecr8 l3EZ7A9eaOOslrtWajgjqcK3VzNxlRmDDJ/sjRVe+eJaiytX8vvUDiRuAS4trOswskmG Xwdw== 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=/MuljZWG/x+WplVgacAb4xeHTO6lSPdUvWtQFpFdr2g=; b=taZPacQVnXFs1AA6TogVyIHBc/cG1fVZDb8E1ePszgAdloA/VJTIxP6SE42A+JA/0B /o5Qk6i+FlvvMfImf0m5ZfGX6fJTHPBgsDH2WufnSPCKvX/mc3rAjxULc3FBYtDx58O2 kyCmpATougQtjJbFQ1l24q0QEUwq3Cz8qkPkOjVOevLYuzzBjvurXCxcjPTJwJhb773W DDqBVzWOLdH9Fw2dySZZX32rSjL5h6aIY5qKO4MESWXpZeszlU9HgIfPieUAgglvALHn YRgXHjCc54SywJ6FsHvHqWzvT8otV/6cceWmmHVHf7x768u7Zv8t97+hD1FotXJdTGFC w6LA== X-Gm-Message-State: AOAM532w5EUXgMubEhFD8sXV1Xymfn/PG6XFVYz/OzQnVhXRo8RggDln /vPZEzas1ozjvah3PuEFCSoKCa4U7uhTyg== X-Google-Smtp-Source: ABdhPJwTZURWR2Nvn1d8UXhgiSto4iJepZ5casIJcvYY9QiIok2m3ZcfLeI3oaIMWtCXkOYOyn7E9A== X-Received: by 2002:a5d:66c8:0:b0:1ed:b016:aa62 with SMTP id k8-20020a5d66c8000000b001edb016aa62mr23898314wrw.678.1646241036594; Wed, 02 Mar 2022 09:10:36 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id p9-20020a05600c1d8900b003813b489d75sm6178001wms.10.2022.03.02.09.10.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 09:10:35 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBC?= =?utf-8?b?amFybWFzb24=?= Subject: [PATCH 13/14] range-diff: plug memory leak in read_patches() Date: Wed, 2 Mar 2022 18:10:19 +0100 Message-Id: X-Mailer: git-send-email 2.35.1.1228.g56895c6ee86 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Amend code added in d9c66f0b5bf (range-diff: first rudimentary implementation, 2018-08-13) to use a "goto cleanup" pattern. This makes for less code, and frees memory that we'd previously leak. The reason for changing free(util) to FREE_AND_NULL(util) is because at the end of the function we append the contents of "util" to a "struct string_list" if it's non-NULL. Signed-off-by: Ævar Arnfjörð Bjarmason --- range-diff.c | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/range-diff.c b/range-diff.c index b2a2961f521..b72eb9fdbee 100644 --- a/range-diff.c +++ b/range-diff.c @@ -40,6 +40,7 @@ static int read_patches(const char *range, struct string_list *list, char *line, *current_filename = NULL; ssize_t len; size_t size; + int ret = -1; strvec_pushl(&cp.args, "log", "--no-color", "-p", "--no-merges", "--reverse", "--date-order", "--decorate=no", @@ -68,10 +69,10 @@ static int read_patches(const char *range, struct string_list *list, if (strbuf_read(&contents, cp.out, 0) < 0) { error_errno(_("could not read `log` output")); finish_command(&cp); - return -1; + goto cleanup; } if (finish_command(&cp)) - return -1; + goto cleanup; line = contents.buf; size = contents.len; @@ -95,12 +96,9 @@ static int read_patches(const char *range, struct string_list *list, CALLOC_ARRAY(util, 1); if (get_oid(p, &util->oid)) { error(_("could not parse commit '%s'"), p); - free(util); - free(current_filename); + FREE_AND_NULL(util); string_list_clear(list, 1); - strbuf_release(&buf); - strbuf_release(&contents); - return -1; + goto cleanup; } util->matching = -1; in_header = 1; @@ -111,11 +109,8 @@ static int read_patches(const char *range, struct string_list *list, error(_("could not parse first line of `log` output: " "did not start with 'commit ': '%s'"), line); - free(current_filename); string_list_clear(list, 1); - strbuf_release(&buf); - strbuf_release(&contents); - return -1; + goto cleanup; } if (starts_with(line, "diff --git")) { @@ -136,12 +131,9 @@ static int read_patches(const char *range, struct string_list *list, if (len < 0) { error(_("could not parse git header '%.*s'"), orig_len, line); - free(util); - free(current_filename); + FREE_AND_NULL(util); string_list_clear(list, 1); - strbuf_release(&buf); - strbuf_release(&contents); - return -1; + goto cleanup; } strbuf_addstr(&buf, " ## "); if (patch.is_new > 0) @@ -219,6 +211,9 @@ static int read_patches(const char *range, struct string_list *list, strbuf_addch(&buf, '\n'); util->diffsize++; } + + ret = 0; +cleanup: strbuf_release(&contents); if (util) @@ -226,7 +221,7 @@ static int read_patches(const char *range, struct string_list *list, strbuf_release(&buf); free(current_filename); - return 0; + return ret; } static int patch_util_cmp(const void *dummy, const struct patch_util *a, From patchwork Wed Mar 2 17:10: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: 12766348 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 54849C433EF for ; Wed, 2 Mar 2022 17:11:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243682AbiCBRLl (ORCPT ); Wed, 2 Mar 2022 12:11:41 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56478 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243702AbiCBRLg (ORCPT ); Wed, 2 Mar 2022 12:11:36 -0500 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 71324C4B53 for ; Wed, 2 Mar 2022 09:10:39 -0800 (PST) Received: by mail-wr1-x42f.google.com with SMTP id t11so3839712wrm.5 for ; Wed, 02 Mar 2022 09:10:39 -0800 (PST) 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=oQR9zKjxdfFJLNk8+W36FFhOWgjqIUfht7NZmwjIdQw=; b=WJ/SxG/8sXLeY7tK0McwNnKoMqjh1QIdrlyX5XqeAYTtqNbIJzHxtxGQjDt3lEaJLo MR4hHl9Ehx0r0EDOBX11UmDPL88kIjHXRscjwZoU11oC0ZikhnW+inHnb5fTPN0X8aLN 5dRgWPiD4p+CwExvqkLmO/dD/Jsizqmj4YLqa3PIFMQC3c2hXLBJ7Gpc7USH1nZ3OL6N 7C0elWhtYZKL/MiG+PwtoJiq2D5m347Bgh8T6DqmMF7YC8UnliEYWDJsWLHIu1StMzZT pQH4L5p7cvp/06o+VRZQZUWWw+Fs8aLTCZpJzJ75AAk4Iw0CE5lDVYmpPzOfpM6aBE1s eyEw== 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=oQR9zKjxdfFJLNk8+W36FFhOWgjqIUfht7NZmwjIdQw=; b=Ix5ZTAi6IY5Y4jymIA4j8iUvxVihk/drXLiCju0cK4HaSs9YL6QYrJMLpfz2kslpJw SsyZ0b75PvhIJvvOfJrI3ykPffRwFrPwbysmOkbqntzd9qmuqDw3Cdg9xJsYDzQsKn5r 10JkVnncJ3Ni1KIFVrlIl35DlXf57DH+Q/u0uatraOTnGaE6dlDf+Acm7TejB+ETH/Fj vNWhvpEKBzsTote3P4CnjOyiwiu5HEKGFegJd7drc+ODOcxXYMYpl9nQNBQu7xzuDgd2 qGY/VaIQ+O/g7LEYy8qSpCmYIfKWO9OpHlbLDFdPypiLpo5oQ1egPxtndwwEcpyurUoS InDg== X-Gm-Message-State: AOAM530ldxHg9RsBn9GmFqhJB47EBHpeLCZas9DxJ4Fhsnn6HZppGxgO VaOZ3A5S5be0A9K3b5b6yVrWKdG3eKAtfw== X-Google-Smtp-Source: ABdhPJwD8/QLrEEtqExNwUeADm9hpAHX7f75i9fxkVYOP4BE4MaQaE4wwdt73go2126AcyP8EWXD0w== X-Received: by 2002:adf:a319:0:b0:1ef:7cc6:d03 with SMTP id c25-20020adfa319000000b001ef7cc60d03mr18032178wrb.411.1646241037635; Wed, 02 Mar 2022 09:10:37 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id p9-20020a05600c1d8900b003813b489d75sm6178001wms.10.2022.03.02.09.10.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 09:10:36 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBC?= =?utf-8?b?amFybWFzb24=?= Subject: [PATCH 14/14] repository.c: free the "path cache" in repo_clear() Date: Wed, 2 Mar 2022 18:10:20 +0100 Message-Id: X-Mailer: git-send-email 2.35.1.1228.g56895c6ee86 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org The "struct path_cache" added in 102de880d24 (path.c: migrate global git_path_* to take a repository argument, 2018-05-17) is only used directly by code in repository.[ch] (but populated in path.[ch]). Let's move this code to repository.[ch], and stop leaking this memory when we run repo_clear(). To avoid the cast change it from a "const char *" to a "char *". This also removes the "PATH_CACHE_INIT" macro, which has never been used for anything. For the "struct repository" we already make a hard assumption that it (and "the_repository") can be identically initialized by making it a "static" variable, so making use of a "PATH_CACHE_INIT" somewhere would have been confusing. Signed-off-by: Ævar Arnfjörð Bjarmason --- path.h | 14 -------------- repository.c | 16 ++++++++++++++++ repository.h | 14 +++++++++++++- 3 files changed, 29 insertions(+), 15 deletions(-) diff --git a/path.h b/path.h index b68691a86b8..0a59c85a62e 100644 --- a/path.h +++ b/path.h @@ -169,20 +169,6 @@ void report_linked_checkout_garbage(void); return r->cached_paths.var; \ } -struct path_cache { - const char *squash_msg; - const char *merge_msg; - const char *merge_rr; - const char *merge_mode; - const char *merge_head; - const char *merge_autostash; - const char *auto_merge; - const char *fetch_head; - const char *shallow; -}; - -#define PATH_CACHE_INIT { 0 } - const char *git_path_squash_msg(struct repository *r); const char *git_path_merge_msg(struct repository *r); const char *git_path_merge_rr(struct repository *r); diff --git a/repository.c b/repository.c index 34610c5a33e..9b86f3f1214 100644 --- a/repository.c +++ b/repository.c @@ -240,6 +240,20 @@ int repo_submodule_init(struct repository *subrepo, return ret; } +static void repo_clear_path_cache(struct repo_path_cache *cache) +{ + FREE_AND_NULL(cache->squash_msg); + FREE_AND_NULL(cache->squash_msg); + FREE_AND_NULL(cache->merge_msg); + FREE_AND_NULL(cache->merge_rr); + FREE_AND_NULL(cache->merge_mode); + FREE_AND_NULL(cache->merge_head); + FREE_AND_NULL(cache->merge_autostash); + FREE_AND_NULL(cache->auto_merge); + FREE_AND_NULL(cache->fetch_head); + FREE_AND_NULL(cache->shallow); +} + void repo_clear(struct repository *repo) { FREE_AND_NULL(repo->gitdir); @@ -280,6 +294,8 @@ void repo_clear(struct repository *repo) remote_state_clear(repo->remote_state); FREE_AND_NULL(repo->remote_state); } + + repo_clear_path_cache(&repo->cached_paths); } int repo_read_index(struct repository *repo) diff --git a/repository.h b/repository.h index ca837cb9e91..e29f361703d 100644 --- a/repository.h +++ b/repository.h @@ -44,6 +44,18 @@ struct repo_settings { int core_multi_pack_index; }; +struct repo_path_cache { + char *squash_msg; + char *merge_msg; + char *merge_rr; + char *merge_mode; + char *merge_head; + char *merge_autostash; + char *auto_merge; + char *fetch_head; + char *shallow; +}; + struct repository { /* Environment */ /* @@ -82,7 +94,7 @@ struct repository { /* * Contains path to often used file names. */ - struct path_cache cached_paths; + struct repo_path_cache cached_paths; /* * Path to the repository's graft file.