[PATCH 14/22] shallow: fix leaking members of `struct shallow_info`
- From
Patrick Steinhardt <ps@pks.im>
- Date
- Aug 26, 2024, 07:22 UTC
- Message-ID
- <2a63030ff09f938d705c117406b501ecf81f67de.1724656120.git.ps@pks.im>
- In-Reply-To
- <cover.1724656120.git.ps@pks.im>
We do not free several struct members in `clear_shallow_info()`. Fix this to plug the resulting leaks.
Signed-off-by: Patrick Steinhardt <ps@pks.im> --- shallow.c | 9 +++++++++ t/t5538-push-shallow.sh | 1 + 2 files changed, 10 insertions(+)
diff --git a/shallow.c b/shallow.c index 7e0ee96ead9..dcebc263d70 100644 --- a/shallow.c +++ b/shallow.c @@ -489,6 +489,15 @@ void prepare_shallow_info(struct shallow_info *info, struct oid_array *sa) void clear_shallow_info(struct shallow_info *info) { + if (info->used_shallow) { + for (size_t i = 0; i < info->shallow->nr; i++) + free(info->used_shallow[i]); + free(info->used_shallow); + } + + free(info->need_reachability_test); + free(info->reachable); + free(info->shallow_ref); free(info->ours); free(info->theirs); } diff --git a/t/t5538-push-shallow.sh b/t/t5538-push-shallow.sh index e91fcc173e8..6adc3a20a45 100755 --- a/t/t5538-push-shallow.sh +++ b/t/t5538-push-shallow.sh @@ -5,6 +5,7 @@ test_description='push from/to a shallow clone' GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME +TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh commit() {
-- 2.46.0.164.g477ce5ccd6.dirty