From: "Kevin Backhouse via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Kevin Backhouse <kevinbackhouse@github.com>,
Kevin Backhouse <kevinbackhouse@github.com>
Subject: [PATCH] This fixes a minor memory leak (detected by LeakSanitizer) in git merge.
Date: Fri, 18 Aug 2023 20:04:21 +0000 [thread overview]
Message-ID: <pull.1577.git.1692389061490.gitgitgadget@gmail.com> (raw)
From: Kevin Backhouse <kevinbackhouse@github.com>
To reproduce (with an ASAN build):
```
mkdir test
cd test
git init
echo x > x.txt
git add .
git commit -m "WIP"
git checkout -b dev
echo y > x.txt
git add .
git commit -m "WIP"
git checkout main
echo z > x.txt
git add .
git commit -m "WIP"
echo a > x.txt
git add .
git merge dev
```
The fix is to call free_commit_list(merge_bases) when an error occurs.
Signed-off-by: Kevin Backhouse <kevinbackhouse@github.com>
---
This fixes a minor memory leak (detected by LeakSanitizer) in git merge
To reproduce (with an ASAN build):
mkdir test
cd test
git init
echo x > x.txt
git add .
git commit -m "WIP"
git checkout -b dev
echo y > x.txt
git add .
git commit -m "WIP"
git checkout main
echo z > x.txt
git add .
git commit -m "WIP"
echo a > x.txt
git add .
git merge dev
The fix is to call free_commit_list(merge_bases) when an error occurs.
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1577%2Fkevinbackhouse%2Ffree-merge-bases-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1577/kevinbackhouse/free-merge-bases-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/1577
merge-ort-wrappers.c | 4 +++-
merge-ort.c | 4 +++-
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/merge-ort-wrappers.c b/merge-ort-wrappers.c
index 4acedf3c338..aeb56c9970c 100644
--- a/merge-ort-wrappers.c
+++ b/merge-ort-wrappers.c
@@ -54,8 +54,10 @@ int merge_ort_recursive(struct merge_options *opt,
struct tree *head = repo_get_commit_tree(opt->repo, side1);
struct merge_result tmp;
- if (unclean(opt, head))
+ if (unclean(opt, head)) {
+ free_commit_list(merge_bases);
return -1;
+ }
memset(&tmp, 0, sizeof(tmp));
merge_incore_recursive(opt, merge_bases, side1, side2, &tmp);
diff --git a/merge-ort.c b/merge-ort.c
index 8631c997002..a0eb91fb011 100644
--- a/merge-ort.c
+++ b/merge-ort.c
@@ -5070,8 +5070,10 @@ static void merge_ort_internal(struct merge_options *opt,
opt->branch1 = "Temporary merge branch 1";
opt->branch2 = "Temporary merge branch 2";
merge_ort_internal(opt, NULL, prev, next, result);
- if (result->clean < 0)
+ if (result->clean < 0) {
+ free_commit_list(merge_bases);
return;
+ }
opt->branch1 = saved_b1;
opt->branch2 = saved_b2;
opt->priv->call_depth--;
base-commit: f9972720e9a405e4f6924a7cde0ed5880687f4d0
--
gitgitgadget
next reply other threads:[~2023-08-18 20:05 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-18 20:04 Kevin Backhouse via GitGitGadget [this message]
2023-08-18 21:41 ` [PATCH] This fixes a minor memory leak (detected by LeakSanitizer) in git merge Junio C Hamano
2023-09-12 15:06 ` Elijah Newren
2023-08-24 14:12 ` [PATCH v2 0/2] " Kevin Backhouse via GitGitGadget
2023-08-24 14:12 ` [PATCH v2 1/2] Regression test for https://github.com/gitgitgadget/git/pull/1577 Kevin Backhouse via GitGitGadget
2023-08-24 15:11 ` Junio C Hamano
2023-08-24 14:12 ` [PATCH v2 2/2] Fix minor memory leak found by LeakSanitizer Kevin Backhouse via GitGitGadget
2023-08-24 15:56 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=pull.1577.git.1692389061490.gitgitgadget@gmail.com \
--to=gitgitgadget@gmail.com \
--cc=git@vger.kernel.org \
--cc=kevinbackhouse@github.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.