builtin/send-pack: fix leaking refspecs

We never free data associated with the assembled refspec in
git-send-pack(1), causing a memory leak. Fix this.

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-08-22 11:17:46 +02:00
committed by Junio C Hamano
parent ca52234183
commit a09efb74e3
6 changed files with 9 additions and 0 deletions

View File

@ -338,5 +338,6 @@ int cmd_send_pack(int argc, const char **argv, const char *prefix)
free_refs(remote_refs); free_refs(remote_refs);
free_refs(local_refs); free_refs(local_refs);
refspec_clear(&rs);
return ret; return ret;
} }

View File

@ -9,6 +9,7 @@ test_description='See why rewinding head breaks send-pack
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh . ./test-lib.sh
cnt=64 cnt=64

View File

@ -4,6 +4,8 @@
# #
test_description='Test the update hook infrastructure.' test_description='Test the update hook infrastructure.'
TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh . ./test-lib.sh
test_expect_success setup ' test_expect_success setup '

View File

@ -1,6 +1,8 @@
#!/bin/sh #!/bin/sh
test_description='send-pack --stdin tests' test_description='send-pack --stdin tests'
TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh . ./test-lib.sh
create_ref () { create_ref () {

View File

@ -4,6 +4,7 @@
# #
test_description='Test git push porcelain output' test_description='Test git push porcelain output'
TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh . ./test-lib.sh
# Create commits in <repo> and assign each commit's oid to shell variables # Create commits in <repo> and assign each commit's oid to shell variables

View File

@ -1,6 +1,8 @@
#!/bin/sh #!/bin/sh
test_description='test disabling of git-over-http in clone/fetch' test_description='test disabling of git-over-http in clone/fetch'
TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh . ./test-lib.sh
. "$TEST_DIRECTORY/lib-proto-disable.sh" . "$TEST_DIRECTORY/lib-proto-disable.sh"
. "$TEST_DIRECTORY/lib-httpd.sh" . "$TEST_DIRECTORY/lib-httpd.sh"