From patchwork Sat Jun 17 06:40:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Rub=C3=A9n_Justo?= X-Patchwork-Id: 13283465 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 BA655EB64D9 for ; Sat, 17 Jun 2023 06:42:16 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346064AbjFQGmP (ORCPT ); Sat, 17 Jun 2023 02:42:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34202 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346068AbjFQGln (ORCPT ); Sat, 17 Jun 2023 02:41:43 -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 A693B2D63 for ; Fri, 16 Jun 2023 23:40:53 -0700 (PDT) Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-3f738f579ceso11090895e9.3 for ; Fri, 16 Jun 2023 23:40:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686984044; x=1689576044; h=content-transfer-encoding:content-language:in-reply-to:mime-version :user-agent:date:message-id:references:cc:to:from:subject:from:to:cc :subject:date:message-id:reply-to; bh=EwPsKY7R0Vwjt6UV+ihATXfK7DdmLjBP90TgwI8Ncyo=; b=Z6hKgTOldMKZBgtU5R+Fe2KQ0vpAoEZ44ZpNZC004EtGCQQsgCfRImetfmhzR1Ovud zv8llEj652Evn7TJN9C8HowT3U+TVRNQeApqT70Dy4HrtZCmYQb8AmwP+EEUOv+hlicR 65PZiJGPRUZgpELg9euCZUtiniZmCIy4KJ1ye8JgUXOsegPLOX1P3xAUITQL5+a1MzYf WQTuEcb6EnjJx3BfXqnOI4WWZBsod3cxj0j2rmXPBb8ZnWvpTboSwzdXGgbHYoZeAdRf MO6xvwOi0NtNMSnb1wp58ryhOXcxmlhX6i60CR6YdYgVkbdSoWkESUoZDRLYPKh4k6Qq 76Rg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686984044; x=1689576044; h=content-transfer-encoding:content-language:in-reply-to:mime-version :user-agent:date:message-id:references:cc:to:from:subject :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=EwPsKY7R0Vwjt6UV+ihATXfK7DdmLjBP90TgwI8Ncyo=; b=C+2r+fIaFd9LZantb06iR4RVJWY2FRvkyjz/c6jj4EmQRf/e5xXAFQB6epNwknVjWI LkBQbGYB80xsZ0TlRDe6yzWGDU1Bq69rPV6wW+mt1UtTpS55caOmpkXV0VsNtJ57qS4a JmoypEVuI6TLUJz+mCSL2gecE5/1XZi61XPk+NSEewCmeiojQaCBkJ035zfI7ytBSu1z a9aP1JhoDG+JiN0DNmQBAHtCLqE5s9rR0mZBNZPBUsI6rkRsuH5tK5a81zeohSSfBvdr G5ljaFg5sDjOsM1scEfV9Ht0hLV2noI3hdm1cJ+W5qO28dqvK2cwVErERcvsE9HAuZyP hOww== X-Gm-Message-State: AC+VfDzEKCya9NntDOykoeAo/cFhYp/hwE37hAXwaPk8bwTHBGabYiQU yYdvcKAg2/lGhGjHMTTV1MQ= X-Google-Smtp-Source: ACHHUZ5sPLEWP5QFWlf/xu5OjioIKM2jlY34vznlcA5YnTdgMbfPVyqym6O+n85BN1nHPBMxh3QiuQ== X-Received: by 2002:a7b:ce8a:0:b0:3f7:e7d5:6123 with SMTP id q10-20020a7bce8a000000b003f7e7d56123mr2806843wmj.41.1686984044462; Fri, 16 Jun 2023 23:40:44 -0700 (PDT) Received: from [192.168.2.52] (151.red-88-14-53.dynamicip.rima-tde.net. [88.14.53.151]) by smtp.gmail.com with ESMTPSA id 1-20020a05600c024100b003f60e143d38sm4088811wmj.11.2023.06.16.23.40.43 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 16 Jun 2023 23:40:44 -0700 (PDT) Subject: [PATCH v3 1/5] rev-parse: fix a leak with --abbrev-ref From: =?utf-8?q?Rub=C3=A9n_Justo?= To: Git List Cc: Jeff King , Junio C Hamano References: <9eb931e7-dd18-8ce8-4d4a-cf3d85066189@gmail.com> <5650c4ed-cec0-d11e-4f68-1661b3638786@gmail.com> <71b49be1-eeef-2f60-38f1-cfcbe4c8252f@gmail.com> Message-ID: <38534e6c-f245-38ad-1468-742b5756ab42@gmail.com> Date: Sat, 17 Jun 2023 08:40:43 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 MIME-Version: 1.0 In-Reply-To: <71b49be1-eeef-2f60-38f1-cfcbe4c8252f@gmail.com> Content-Language: en-US Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org To handle "--abbrev-ref" we use shorten_unambiguous_ref(). This function takes a refname and returns a shortened refname, which is a newly allocated string that needs to be freed. Unfortunately, the refname variable is reused to receive the shortened one. Therefore, we lose the original refname, which needs to be freed as well, producing a leak. This leak can be reviewed with: $ for a in {1..10}; do git branch foo_${a}; done $ git rev-parse --abbrev-ref refs/heads/foo_{1..10} Direct leak of 171 byte(s) in 10 object(s) allocated from: ... in xstrdup wrapper.c ... in expand_ref refs.c ... in repo_dwim_ref refs.c ... in show_rev builtin/rev-parse.c ... in cmd_rev_parse builtin/rev-parse.c ... in run_builtin git.c We have this leak since a45d34691e (rev-parse: --abbrev-ref option to shorten ref name, 2009-04-13) when "--abbrev-ref" was introduced. Let's fix it. Signed-off-by: Rubén Justo --- builtin/rev-parse.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/builtin/rev-parse.c b/builtin/rev-parse.c index 852e49e340..d2eb239a08 100644 --- a/builtin/rev-parse.c +++ b/builtin/rev-parse.c @@ -156,9 +156,12 @@ static void show_rev(int type, const struct object_id *oid, const char *name) */ break; case 1: /* happy */ - if (abbrev_ref) + if (abbrev_ref) { + char *old = full; full = shorten_unambiguous_ref(full, abbrev_ref_strict); + free(old); + } show_with_type(type, full); break; default: /* ambiguous */ From patchwork Sat Jun 17 06:41:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Rub=C3=A9n_Justo?= X-Patchwork-Id: 13283466 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 8EFFEEB64D9 for ; Sat, 17 Jun 2023 06:42:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345997AbjFQGmi (ORCPT ); Sat, 17 Jun 2023 02:42:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34054 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231982AbjFQGmI (ORCPT ); Sat, 17 Jun 2023 02:42:08 -0400 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 5C8D030E4 for ; Fri, 16 Jun 2023 23:41:11 -0700 (PDT) Received: by mail-wm1-x336.google.com with SMTP id 5b1f17b1804b1-3f8c74af64fso11747135e9.1 for ; Fri, 16 Jun 2023 23:41:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686984069; x=1689576069; h=content-transfer-encoding:content-language:in-reply-to:mime-version :user-agent:date:message-id:references:cc:to:from:subject:from:to:cc :subject:date:message-id:reply-to; bh=MgZNO4N7Lp3aOL0RIWfyplzy3WbAoT4TzJnAt4E1rDw=; b=HGep0XQcyOKcVRZgxh9zsZOGZGNh6lc3Ru2OiX+sRqHMKSArXP7tJcyL19kPH5jrRv bwp9KLT8Wx+MXDgfeYvUu2hmF9l1FLm82eHgBAqDwOLt44zgvMsuP89PWYQCovpgWj2O Dct9UfuTa52JGT7Kt9Bokv4tutGEXI0PcMxFEPCNEtVSUWm0i2R3D0W9rjB2OORmiRBG dvgMgwTUsyOSuTf7/q8pDbV56mV208Mcs7k0Tjeixt3eTb2Hg+VtQMaCPH8R1sPyVLZ0 l1UudLJvRyOoZlSvk8IYtw9solWp6wJb2V8KfD9Y65xYqMnIQHMCLB1QhIvFEhoOFJ/z KcUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686984069; x=1689576069; h=content-transfer-encoding:content-language:in-reply-to:mime-version :user-agent:date:message-id:references:cc:to:from:subject :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=MgZNO4N7Lp3aOL0RIWfyplzy3WbAoT4TzJnAt4E1rDw=; b=VdmX5W3+HxK223vU7PacKTOfQU+eCQBQ0G46foWSOzCnqSr5hFKBkCALtIWDPB6cYu Zo6HRPf+Zr4rpmiz4Prz7ooY/TnCi/TwCRHIoekofhwjnLkl2AqH1tm62h+b9hp+CIwE NV6fzABaA5x/vqfVXkcMgM78D0rZ33LnDKmDR4PnMwgX+oUO1uVtmXILKXh8UijDpPeF e2lJJqikM1nGx4eJmx50Y615YZvdooci8aRrfsCWXntSFRFIkEhA8I/+VMB6RrZNjl+r SqOFltsfevFhVzL/yHeBua6vY7oyBYX/AKQc/6rAxvnDP0JmrABa7KUc9gzng1TsXof7 U40g== X-Gm-Message-State: AC+VfDy5ODmi5tkjVESp9DLzBIB9OIvwZR1AqEN+AWMEdYLHQYv+qz5S 6sWv6J9+jFO0lZtmFCaAkIw= X-Google-Smtp-Source: ACHHUZ4OMXGUNpdcI3uK77j9dMkoV7qUSiuMUag4P3uRdT7ppw7KL1/jiPw4qpJx/tNV0XPQHTakwg== X-Received: by 2002:a1c:7203:0:b0:3f8:f42a:a2c5 with SMTP id n3-20020a1c7203000000b003f8f42aa2c5mr2268493wmc.36.1686984069242; Fri, 16 Jun 2023 23:41:09 -0700 (PDT) Received: from [192.168.2.52] (151.red-88-14-53.dynamicip.rima-tde.net. [88.14.53.151]) by smtp.gmail.com with ESMTPSA id d6-20020adffd86000000b0030ae87bd3e3sm25417608wrr.18.2023.06.16.23.41.08 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 16 Jun 2023 23:41:08 -0700 (PDT) Subject: [PATCH v3 2/5] branch: fix a leak in setup_tracking From: =?utf-8?q?Rub=C3=A9n_Justo?= To: Git List Cc: Jeff King , Junio C Hamano References: <9eb931e7-dd18-8ce8-4d4a-cf3d85066189@gmail.com> <5650c4ed-cec0-d11e-4f68-1661b3638786@gmail.com> <71b49be1-eeef-2f60-38f1-cfcbe4c8252f@gmail.com> Message-ID: <3d33cd59-d4f3-9112-457f-7d1bfdd08714@gmail.com> Date: Sat, 17 Jun 2023 08:41:08 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 MIME-Version: 1.0 In-Reply-To: <71b49be1-eeef-2f60-38f1-cfcbe4c8252f@gmail.com> Content-Language: en-US Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org In bdaf1dfae7 (branch: new autosetupmerge option "simple" for matching branches, 2022-04-29) a new exit for setup_tracking() missed the clean-up, producing a leak. $ git config branch.autoSetupMerge simple $ git remote add local . $ git update-ref refs/remotes/local/foo HEAD $ git branch bar local/foo Direct leak of 384 byte(s) in 1 object(s) allocated from: ... in xrealloc wrapper.c ... in string_list_append_nodup string-list.c ... in find_tracked_branch branch.c ... in for_each_remote remote.c ... in setup_tracking branch.c ... in create_branch branch.c ... in cmd_branch builtinbranch.c ... in run_builtin git.c Indirect leak of 24 byte(s) in 1 object(s) allocated from: ... in xrealloc wrapper.c ... in strbuf_grow strbuf.c ... in strbuf_add strbuf.c ... in match_name_with_pattern remote.c ... in query_refspecs remote.c ... in remote_find_tracking remote.c ... in find_tracked_branch branch.c ... in for_each_remote remote.c ... in setup_tracking branch.c ... in create_branch branch.c ... in cmd_branch builtinbranch.c ... in run_builtin git.c The return introduced in bdaf1dfae7 was to avoid setting up the tracking, but even in that case it is still necessary to do the clean-up. Let's do it. Signed-off-by: Rubén Justo --- branch.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/branch.c b/branch.c index 427bde896f..d88f50a48a 100644 --- a/branch.c +++ b/branch.c @@ -333,7 +333,7 @@ static void setup_tracking(const char *new_ref, const char *orig_ref, if (!skip_prefix(tracking.srcs->items[0].string, "refs/heads/", &tracked_branch) || strcmp(tracked_branch, new_ref)) - return; + goto cleanup; } if (tracking.srcs->nr < 1) From patchwork Sat Jun 17 06:41:22 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Rub=C3=A9n_Justo?= X-Patchwork-Id: 13283467 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 37F4FEB64D9 for ; Sat, 17 Jun 2023 06:42:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346128AbjFQGm6 (ORCPT ); Sat, 17 Jun 2023 02:42:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33204 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234191AbjFQGmc (ORCPT ); Sat, 17 Jun 2023 02:42:32 -0400 Received: from mail-wr1-x430.google.com (mail-wr1-x430.google.com [IPv6:2a00:1450:4864:20::430]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1AB1F44A7 for ; Fri, 16 Jun 2023 23:41:26 -0700 (PDT) Received: by mail-wr1-x430.google.com with SMTP id ffacd0b85a97d-311099fac92so1261251f8f.0 for ; Fri, 16 Jun 2023 23:41:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686984084; x=1689576084; h=content-transfer-encoding:content-language:in-reply-to:mime-version :user-agent:date:message-id:references:cc:to:from:subject:from:to:cc :subject:date:message-id:reply-to; bh=dCuO7aOmHMwsehHwZAAEQvDE9lIDN1cQAtYHsydL2EU=; b=GQchUqOdkCjEl04MtQeHwOqN0M/5u/2NuI+1zn4pHUIf0X7xZdadTd6Uvnqb/AMzoC rkTcycDiUZDhS9OZFWP/9b0QCK91s6vmD2lrH6sjcfc3/r7WLDQ91R31WgXKEBR8d6Ql Zj6lg07CLTQOPrw67kk28pI2I6oqoMkQobSQs9RBio+4dtcDV721mnoJTm6iZjYEivfe K2rb1wcUQ9daJTqSHTq5mYKA8/CcpfUMBLoN1PHyw0do4IW6nDior99SGuJhr1urYcAC o4tgWlfjLdqhSrJbO3iIwWMKIGKB5DMbFO1/ISFhHZjP0cNNHei45+wHKX6WOrSAZijm cXxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686984084; x=1689576084; h=content-transfer-encoding:content-language:in-reply-to:mime-version :user-agent:date:message-id:references:cc:to:from:subject :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=dCuO7aOmHMwsehHwZAAEQvDE9lIDN1cQAtYHsydL2EU=; b=lqpNg7Ee6pAPDbS8ElyXc/uGlHXrucxHks/q8iaIoI8ldn6AaEi0Occr6ClVVPXKMS XPkRKC13kktXAdHuuHGarf3lsR88YTfZmidw2v2jKFHoNnBksiexJJAkwhByZYgWRa4F H/+OQa9E7aUP7HXr/IQ/UA1keMqqtInjUkIcpOf8jt3VaAOgtUr1YZKN1ky7BfDeo3jh mjl5qFTma57BsnXB5ynV3fKknSLr4q0TkqsduPTjk1e4c03bxLWKmPIKJqfwIPej72VW 2QnCmkLpAGLJeo812qInqK+GlM5T2YEu9PxbRbHZ1UnHgdOqFGLpZlBAzSXZkvRaVYB2 APvg== X-Gm-Message-State: AC+VfDxoC65ajb5crE54dC5bA231jczVSqaPYBFupUwDuLfmNa9l77ve K+iCS1SR+3af1KfIiWk09fs= X-Google-Smtp-Source: ACHHUZ6w84eKJuL0SYQ0kna1rAytXtjHU5m+jifAdPXeNsMTAbo9kAx2RjQtAxjBwrMM9sukRKn1rw== X-Received: by 2002:adf:f18f:0:b0:30f:b9de:ab21 with SMTP id h15-20020adff18f000000b0030fb9deab21mr3118660wro.14.1686984083645; Fri, 16 Jun 2023 23:41:23 -0700 (PDT) Received: from [192.168.2.52] (151.red-88-14-53.dynamicip.rima-tde.net. [88.14.53.151]) by smtp.gmail.com with ESMTPSA id k17-20020a5d4291000000b003047ea78b42sm25472867wrq.43.2023.06.16.23.41.23 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 16 Jun 2023 23:41:23 -0700 (PDT) Subject: [PATCH v3 3/5] branch: fix a leak in cmd_branch From: =?utf-8?q?Rub=C3=A9n_Justo?= To: Git List Cc: Jeff King , Junio C Hamano References: <9eb931e7-dd18-8ce8-4d4a-cf3d85066189@gmail.com> <5650c4ed-cec0-d11e-4f68-1661b3638786@gmail.com> <71b49be1-eeef-2f60-38f1-cfcbe4c8252f@gmail.com> Message-ID: <510e9029-c424-2861-ab3c-30046333f715@gmail.com> Date: Sat, 17 Jun 2023 08:41:22 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 MIME-Version: 1.0 In-Reply-To: <71b49be1-eeef-2f60-38f1-cfcbe4c8252f@gmail.com> Content-Language: en-US Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org In 98e7ab6d42 (for-each-ref: delay parsing of --sort= options, 2021-10-20) a new string_list was introduced to accumulate any "branch.sort" setting. That string_list is cleared in ref_sorting_options(), which is only called when processing the "--list" sub-command. Therefore, with other sub-command, while having any sort option set, a leak is produced, e.g.: $ git config branch.sort invalid_sort_option $ git branch --edit-description Direct leak of 384 byte(s) in 1 object(s) allocated from: ... in xrealloc wrapper.c ... in string_list_append_nodup string-list.c ... in string_list_append string-list.c ... in git_branch_config builtin/branch.c ... in configset_iter config.c ... in repo_config config.c ... in git_config config.c ... in cmd_branch builtin/branch.c ... in run_builtin git.c Indirect leak of 20 byte(s) in 1 object(s) allocated from: ... in xstrdup wrapper.c ... in string_list_append string-list.c ... in git_branch_config builtin/branch.c ... in configset_iter config.c ... in repo_config config.c ... in git_config config.c ... in cmd_branch builtin/branch.c ... in run_builtin git.c We don't have a common clean-up section in cmd_branch(). To avoid refactoring, keep the fix simple, and while we find a better solution which hopefuly will avoid entirely that string_list, when no sort options are needed; let's squelch the leak sanitizer using UNLEAK(). Signed-off-by: Rubén Justo --- builtin/branch.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/builtin/branch.c b/builtin/branch.c index e6c2655af6..075e580d22 100644 --- a/builtin/branch.c +++ b/builtin/branch.c @@ -832,6 +832,8 @@ int cmd_branch(int argc, const char **argv, const char *prefix) if (list) setup_auto_pager("branch", 1); + UNLEAK(sorting_options); + if (delete) { if (!argc) die(_("branch name required")); From patchwork Sat Jun 17 06:41:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Rub=C3=A9n_Justo?= X-Patchwork-Id: 13283468 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 01A42EB64D9 for ; Sat, 17 Jun 2023 06:43:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229993AbjFQGnO (ORCPT ); Sat, 17 Jun 2023 02:43:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33566 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345698AbjFQGms (ORCPT ); Sat, 17 Jun 2023 02:42:48 -0400 Received: from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com [IPv6:2a00:1450:4864:20::42c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E9C503C26 for ; Fri, 16 Jun 2023 23:41:42 -0700 (PDT) Received: by mail-wr1-x42c.google.com with SMTP id ffacd0b85a97d-30c55d2b9f3so1053599f8f.2 for ; Fri, 16 Jun 2023 23:41:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686984101; x=1689576101; h=content-transfer-encoding:content-language:in-reply-to:mime-version :user-agent:date:message-id:references:cc:to:from:subject:from:to:cc :subject:date:message-id:reply-to; bh=9JIbPgdsiKpXM1bp1v3FWE/MNtsf9HHnjwD9ou7ZyOE=; b=S+YB7Ic0YaMyRPH9hf3kE4Bu+iTTbPrAnUUpO91GVrlDTYK5LATalVi+9Z/GA1WcRQ T+WKMYqFiCeyyAoE8L0l1yuafRkzcbafqSLFXhAmi4ly+k0WJskVUZezLMgWe5R/pmBH JnqOlsUW4q6Ih/b9Bt7ZkZ/gM64GmZ6QldJOHjg+HQ9zMK1v/j5iNHPoOjPaZ1vNnDgx dtyC8P6hwJepggC/W/WJXxwpDanGOSvfhWfwVeP6XIW7ruOg5dbAEebEUuz57bqVHpc8 sVXM8qMQcVcgOHK6mOcIuHj0QBHWo19xvZucgtO7dFASyQ0/qrpip2Xlh1drBDf6qraD 5cLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686984101; x=1689576101; h=content-transfer-encoding:content-language:in-reply-to:mime-version :user-agent:date:message-id:references:cc:to:from:subject :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=9JIbPgdsiKpXM1bp1v3FWE/MNtsf9HHnjwD9ou7ZyOE=; b=P/tYPmkVgfEq8HE1YKlfc4R7+MjIDA/mNr6v0H8LbSZOSdvRpCh2ZV3qfphPorrrfW XwNhJQ8ZU5pyc4f6IL10OSfJlsMJgvi0ZKhj2HMRv/ofE94xT0WOJP6Nm1XaWwQjinFW 7+DlYBflbiEU3dKkzW24+7lzNQiYZijihYO6LIAR3XkOmm24w9a9B+7pWXMLzHrU6MvP q1xID8ej468ICGhDj2zoOKSiwH10CYGSKc0ddA42SAlliHNA7RM/qVci0u5Dgsmgm0fZ hVM937NQmuXAZ0nczRZFdfB2F71hhJF3WL76wde3Q8gJhV0qECBswsjAdiUlnJ+S1Pfk LixA== X-Gm-Message-State: AC+VfDwGFkNvYZYlLBtBblolOhGr08FiunT/PwziqXngidFzqWS8e7DC PFjqjr+FN+W/EQnOBA+l3yk= X-Google-Smtp-Source: ACHHUZ7PlY0FjvUDLJcS2CtlfnMSyd2vHu8WpoCpzgJxJNgeInO3pa2gZNzDIf4P75oy9z/v3lqMaw== X-Received: by 2002:a5d:4008:0:b0:2ff:f37:9d0f with SMTP id n8-20020a5d4008000000b002ff0f379d0fmr2341265wrp.57.1686984101188; Fri, 16 Jun 2023 23:41:41 -0700 (PDT) Received: from [192.168.2.52] (151.red-88-14-53.dynamicip.rima-tde.net. [88.14.53.151]) by smtp.gmail.com with ESMTPSA id cs6-20020a056000088600b0030ae849c70csm25452170wrb.37.2023.06.16.23.41.40 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 16 Jun 2023 23:41:40 -0700 (PDT) Subject: [PATCH v3 4/5] config: fix a leak in git_config_copy_or_rename_section_in_file From: =?utf-8?q?Rub=C3=A9n_Justo?= To: Git List Cc: Jeff King , Junio C Hamano References: <9eb931e7-dd18-8ce8-4d4a-cf3d85066189@gmail.com> <5650c4ed-cec0-d11e-4f68-1661b3638786@gmail.com> <71b49be1-eeef-2f60-38f1-cfcbe4c8252f@gmail.com> Message-ID: <33fb45d2-5c6a-b5ad-d405-e7acb8fdbabf@gmail.com> Date: Sat, 17 Jun 2023 08:41:40 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 MIME-Version: 1.0 In-Reply-To: <71b49be1-eeef-2f60-38f1-cfcbe4c8252f@gmail.com> Content-Language: en-US Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org A branch can have its configuration spread over several configuration sections. This situation was already foreseen in 52d59cc645 (branch: add a --copy (-c) option to go with --move (-m), 2017-06-18) when "branch -c" was introduced. Unfortunately, a leak was also introduced: $ git branch foo $ cat >> .git/config < --- config.c | 1 + 1 file changed, 1 insertion(+) diff --git a/config.c b/config.c index 39a7d7422c..207e4394a3 100644 --- a/config.c +++ b/config.c @@ -3833,6 +3833,7 @@ static int git_config_copy_or_rename_section_in_file(const char *config_filename output[0] = '\t'; } } else { + strbuf_release(©str); copystr = store_create_section(new_name, &store); } } From patchwork Sat Jun 17 06:41:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Rub=C3=A9n_Justo?= X-Patchwork-Id: 13283469 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 3A114EB64DA for ; Sat, 17 Jun 2023 06:43:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346144AbjFQGnV (ORCPT ); Sat, 17 Jun 2023 02:43:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33658 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345821AbjFQGmw (ORCPT ); Sat, 17 Jun 2023 02:42:52 -0400 Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com [IPv6:2a00:1450:4864:20::32c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1421A3C39 for ; Fri, 16 Jun 2023 23:41:57 -0700 (PDT) Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-3f7368126a6so11535345e9.0 for ; Fri, 16 Jun 2023 23:41:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686984115; x=1689576115; h=content-transfer-encoding:content-language:in-reply-to:mime-version :user-agent:date:message-id:references:cc:to:from:subject:from:to:cc :subject:date:message-id:reply-to; bh=cw2ANqhRYJm1W1XPiRMKYg1p8yXdsm1zX4nKMtHqOHk=; b=BtqtovR3V6YQ4YBLYIJYzYQBfVOrDksZSYe2xiWoAzu4Fen0RD86KOyCzsRVt3jr1W NF2Fh0ceT8b4QKbqQpXj/jauJ7fVhQua8cuqmJRDwrq5vp6XHElPCcprAThUP9PtGtFu Vtnoq/7m2Z2hs6BCvMoculq98Ai3XqHthmax/2xUsX3cusQTp3FO7pttsNaADUgd8nCS 0HJHwWReXuMfynz8zdeFtOXOpsEIaQBmYgBwjeVHOJ7yVRJqSHYs4AjwbQyCrTiuMvJm aW3UKeEH5HJ2tYzCmMA4S1KueGoec9Hnw4JowyeC8jQhRWsro2t5bhl1jq/HLqitfc4L GqoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686984115; x=1689576115; h=content-transfer-encoding:content-language:in-reply-to:mime-version :user-agent:date:message-id:references:cc:to:from:subject :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=cw2ANqhRYJm1W1XPiRMKYg1p8yXdsm1zX4nKMtHqOHk=; b=jGLQJXG3pQeFQGLkAhRcxMYYngTYl9+5auAB3YR/2w0jKXgjVj7mqdijFFHBiuEeL+ dw7jbHGqK0PMFuObQQvd5JykrgT2IIRw+oUKnklBldfGOy0y1SP337cL7tJSSGZXq698 Q6bWAo4kSBsM02DwOWYnc1ehrU0Lbiaxf7+SsE8yem8ui1Hj49AzmggdHXjpK25fV+dc 3hSkYRyBBgqfRzzzzrkVp4NlYrzNDEjl7Rx88PONHTrf0NeHAWnOiMFoszV5dY9QKyV2 5STHZOehh7o9CCbk6pPUpZg2xMbzAShLzSOHHAlfLZ6IgpSI7pZ5KWpf1FGFPAzLlP/s HgaA== X-Gm-Message-State: AC+VfDzpZRIfdkYJA6l/jPVS0wvBhtKmOz/dstB8/Lj+AnzoEWu9H7yY oIYoTeGmbcroveAkm4DuxW8= X-Google-Smtp-Source: ACHHUZ5I2H7gU1SjSq9paWVt+uu+CgatsXv3cgZP6d4BHWNTdcIGZXHyn0g/CKTMOHMruO0a6/9CuQ== X-Received: by 2002:a05:600c:21d6:b0:3f9:825:c3ba with SMTP id x22-20020a05600c21d600b003f90825c3bamr60970wmj.31.1686984115155; Fri, 16 Jun 2023 23:41:55 -0700 (PDT) Received: from [192.168.2.52] (151.red-88-14-53.dynamicip.rima-tde.net. [88.14.53.151]) by smtp.gmail.com with ESMTPSA id f15-20020a7bcd0f000000b003f8db429095sm4076478wmj.28.2023.06.16.23.41.54 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 16 Jun 2023 23:41:54 -0700 (PDT) Subject: [PATCH v3 5/5] tests: mark as passing with SANITIZE=leak From: =?utf-8?q?Rub=C3=A9n_Justo?= To: Git List Cc: Jeff King , Junio C Hamano References: <9eb931e7-dd18-8ce8-4d4a-cf3d85066189@gmail.com> <5650c4ed-cec0-d11e-4f68-1661b3638786@gmail.com> <71b49be1-eeef-2f60-38f1-cfcbe4c8252f@gmail.com> Message-ID: <94d3610f-4637-5f56-9ab3-7cbd951bc773@gmail.com> Date: Sat, 17 Jun 2023 08:41:54 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 MIME-Version: 1.0 In-Reply-To: <71b49be1-eeef-2f60-38f1-cfcbe4c8252f@gmail.com> Content-Language: en-US Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org The tests listed below, since previous commits, no longer trigger any leak. + t1507-rev-parse-upstream.sh + t1508-at-combinations.sh + t1514-rev-parse-push.sh + t2027-checkout-track.sh + t3200-branch.sh + t3204-branch-name-interpretation.sh + t5404-tracking-branches.sh + t5517-push-mirror.sh + t5525-fetch-tagopt.sh + t6040-tracking-info.sh + t7508-status.sh Let's mark them with "TEST_PASSES_SANITIZE_LEAK=true" to notice and fix promptly any new leak that may be introduced and triggered by them in the future. Signed-off-by: Rubén Justo --- t/t1507-rev-parse-upstream.sh | 1 + t/t1508-at-combinations.sh | 1 + t/t1514-rev-parse-push.sh | 1 + t/t2027-checkout-track.sh | 1 + t/t3200-branch.sh | 1 + t/t3204-branch-name-interpretation.sh | 1 + t/t5404-tracking-branches.sh | 1 + t/t5517-push-mirror.sh | 1 + t/t5525-fetch-tagopt.sh | 1 + t/t6040-tracking-info.sh | 1 + t/t7508-status.sh | 1 + 11 files changed, 11 insertions(+) diff --git a/t/t1507-rev-parse-upstream.sh b/t/t1507-rev-parse-upstream.sh index cb9ef7e329..b9af6b3ac0 100755 --- a/t/t1507-rev-parse-upstream.sh +++ b/t/t1507-rev-parse-upstream.sh @@ -5,6 +5,7 @@ test_description='test @{upstream} syntax' GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME +TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh diff --git a/t/t1508-at-combinations.sh b/t/t1508-at-combinations.sh index 87a4286414..e841309d0e 100755 --- a/t/t1508-at-combinations.sh +++ b/t/t1508-at-combinations.sh @@ -4,6 +4,7 @@ test_description='test various @{X} syntax combinations together' GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME +TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh check() { diff --git a/t/t1514-rev-parse-push.sh b/t/t1514-rev-parse-push.sh index d868a08110..a835a196aa 100755 --- a/t/t1514-rev-parse-push.sh +++ b/t/t1514-rev-parse-push.sh @@ -4,6 +4,7 @@ test_description='test @{push} syntax' GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME +TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh resolve () { diff --git a/t/t2027-checkout-track.sh b/t/t2027-checkout-track.sh index dca35aa3e3..a8bbc60954 100755 --- a/t/t2027-checkout-track.sh +++ b/t/t2027-checkout-track.sh @@ -5,6 +5,7 @@ test_description='tests for git branch --track' 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/t3200-branch.sh b/t/t3200-branch.sh index 98b6c8ac34..daf1666df7 100755 --- a/t/t3200-branch.sh +++ b/t/t3200-branch.sh @@ -8,6 +8,7 @@ test_description='git branch assorted tests' 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-rebase.sh diff --git a/t/t3204-branch-name-interpretation.sh b/t/t3204-branch-name-interpretation.sh index 3399344f25..594e3e43e1 100755 --- a/t/t3204-branch-name-interpretation.sh +++ b/t/t3204-branch-name-interpretation.sh @@ -9,6 +9,7 @@ This script aims to check the behavior of those corner cases. GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME +TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh expect_branch() { diff --git a/t/t5404-tracking-branches.sh b/t/t5404-tracking-branches.sh index cc07889667..51737eeafe 100755 --- a/t/t5404-tracking-branches.sh +++ b/t/t5404-tracking-branches.sh @@ -5,6 +5,7 @@ test_description='tracking branch update checks for git push' 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/t5517-push-mirror.sh b/t/t5517-push-mirror.sh index a448e169bd..6d4944a728 100755 --- a/t/t5517-push-mirror.sh +++ b/t/t5517-push-mirror.sh @@ -5,6 +5,7 @@ test_description='pushing to a mirror repository' GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME +TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh D=$(pwd) diff --git a/t/t5525-fetch-tagopt.sh b/t/t5525-fetch-tagopt.sh index 45815f7378..3a28f1ded5 100755 --- a/t/t5525-fetch-tagopt.sh +++ b/t/t5525-fetch-tagopt.sh @@ -2,6 +2,7 @@ test_description='tagopt variable affects "git fetch" and is overridden by commandline.' +TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh setup_clone () { diff --git a/t/t6040-tracking-info.sh b/t/t6040-tracking-info.sh index a313849406..7ddbd96e58 100755 --- a/t/t6040-tracking-info.sh +++ b/t/t6040-tracking-info.sh @@ -5,6 +5,7 @@ test_description='remote tracking stats' GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME +TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh advance () { diff --git a/t/t7508-status.sh b/t/t7508-status.sh index aed07c5b62..4c1f03e609 100755 --- a/t/t7508-status.sh +++ b/t/t7508-status.sh @@ -5,6 +5,7 @@ test_description='git status' +TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh . "$TEST_DIRECTORY"/lib-terminal.sh