diff mbox series

[v2,14/22] shallow: fix leaking members of `struct shallow_info`

Message ID d3996c92d801dcd0bae463e04d4197b4d619482e.1725530720.git.ps@pks.im (mailing list archive)
State Accepted
Commit 16c6fb5a94231e76f618eefc7a683fd12091968a
Headers show
Series Memory leak fixes (pt.6) | expand

Commit Message

Patrick Steinhardt Sept. 5, 2024, 10:09 a.m. UTC
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 mbox series

Patch

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() {