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>
This commit is contained in:
Patrick Steinhardt 2024-09-26 13:46:57 +02:00 committed by Junio C Hamano
parent 6d82437a47
commit 355b3190ee
2 changed files with 3 additions and 0 deletions

View File

@ -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);
}

View File

@ -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