Skip to content

Commit f4c768c

Browse files
peffgitster
authored andcommitted
http-push: clean up local_refs at exit
We allocate a list of ref structs from get_local_heads() but never clean it up. We should do so before exiting to avoid complaints from the leak-checker. Note that we have to initialize it to NULL, because there's one code path that can jump to the cleanup label before we assign to it. Fixing this lets us mark t5540 as leak-free. Curiously building with SANITIZE=leak and gcc does not seem to find this problem, but switching to clang does. It seems like a fairly obvious leak, though. I was curious that the matching remote_refs did not have the same leak. But that is because we store the list in a global variable, so it's still reachable after we exit. Arguably we could treat it the same as future-proofing, but I didn't bother (now that the script is marked leak-free, anybody moving it to a stack variable will notice). Signed-off-by: Jeff King <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 9699327 commit f4c768c

File tree

2 files changed

+3
-1
lines changed

2 files changed

+3
-1
lines changed

http-push.c

+2-1
Original file line numberDiff line numberDiff line change
@@ -1719,7 +1719,7 @@ int cmd_main(int argc, const char **argv)
17191719
int rc = 0;
17201720
int i;
17211721
int new_refs;
1722-
struct ref *ref, *local_refs;
1722+
struct ref *ref, *local_refs = NULL;
17231723

17241724
CALLOC_ARRAY(repo, 1);
17251725

@@ -1997,6 +1997,7 @@ int cmd_main(int argc, const char **argv)
19971997
}
19981998

19991999
refspec_clear(&rs);
2000+
free_refs(local_refs);
20002001

20012002
return rc;
20022003
}

t/t5540-http-push-webdav.sh

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ This test runs various sanity checks on http-push.'
1010
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
1111
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
1212

13+
TEST_PASSES_SANITIZE_LEAK=true
1314
. ./test-lib.sh
1415

1516
if git http-push > /dev/null 2>&1 || [ $? -eq 128 ]

0 commit comments

Comments
 (0)