summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2024-09-26 13:46:57 +0200
committerJunio C Hamano <gitster@pobox.com>2024-09-27 17:25:36 +0200
commit355b3190ee208594ab122eace8a20f17d668e21c (patch)
tree7928027ef5d3a49a78b892fc4f0ee5b4d80c9424
parentgrep: fix leaking grep pattern (diff)
downloadgit-355b3190ee208594ab122eace8a20f17d668e21c.tar.xz
git-355b3190ee208594ab122eace8a20f17d668e21c.zip
promisor-remote: fix leaking partial clone filter
The partial clone filter of a promisor remote is never free'd, causing memory leaks. Furthermore, in case multiple partial clone filters are defined for the same remote, we'd overwrite previous values without freeing them. Fix these leaks. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--promisor-remote.c2
-rwxr-xr-xt/t7814-grep-recurse-submodules.sh1
2 files changed, 3 insertions, 0 deletions
diff --git a/promisor-remote.c b/promisor-remote.c
index 317e1b127f..9345ae3db2 100644
--- a/promisor-remote.c
+++ b/promisor-remote.c
@@ -154,6 +154,7 @@ static int promisor_remote_config(const char *var, const char *value,
if (!r)
return 0;
+ FREE_AND_NULL(r->partial_clone_filter);
return git_config_string(&r->partial_clone_filter, var, value);
}
@@ -189,6 +190,7 @@ void promisor_remote_clear(struct promisor_remote_config *config)
{
while (config->promisors) {
struct promisor_remote *r = config->promisors;
+ free(r->partial_clone_filter);
config->promisors = config->promisors->next;
free(r);
}
diff --git a/t/t7814-grep-recurse-submodules.sh b/t/t7814-grep-recurse-submodules.sh
index 167fe66150..55ed630e77 100755
--- a/t/t7814-grep-recurse-submodules.sh
+++ b/t/t7814-grep-recurse-submodules.sh
@@ -7,6 +7,7 @@ submodules.
'
TEST_CREATE_REPO_NO_TEMPLATE=1
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
GIT_TEST_FATAL_REGISTER_SUBMODULE_ODB=1