summaryrefslogtreecommitdiffstats
path: root/http-fetch.c
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2024-09-24 23:50:09 +0200
committerJunio C Hamano <gitster@pobox.com>2024-09-25 19:24:52 +0200
commit2ccf570efeb673a28f6f84c749238b33aa1be688 (patch)
treef723c28ffdc406e60a8d641a48842630dfb1228f /http-fetch.c
parentThe 20th batch (diff)
downloadgit-2ccf570efeb673a28f6f84c749238b33aa1be688.tar.xz
git-2ccf570efeb673a28f6f84c749238b33aa1be688.zip
http-fetch: clear leaking git-index-pack(1) arguments
We never clear the arguments that we pass to git-index-pack(1). Create a common exit path and release them there to plug this leak. This is leak is exposed by t5702, but plugging the leak does not make the whole test suite pass. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'http-fetch.c')
-rw-r--r--http-fetch.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/http-fetch.c b/http-fetch.c
index d460bb1837..02ab80533f 100644
--- a/http-fetch.c
+++ b/http-fetch.c
@@ -106,6 +106,7 @@ int cmd_main(int argc, const char **argv)
int nongit;
struct object_id packfile_hash;
struct strvec index_pack_args = STRVEC_INIT;
+ int ret;
setup_git_directory_gently(&nongit);
@@ -157,8 +158,8 @@ int cmd_main(int argc, const char **argv)
fetch_single_packfile(&packfile_hash, argv[arg],
index_pack_args.v);
-
- return 0;
+ ret = 0;
+ goto out;
}
if (index_pack_args.nr)
@@ -170,7 +171,12 @@ int cmd_main(int argc, const char **argv)
commit_id = (char **) &argv[arg++];
commits = 1;
}
- return fetch_using_walker(argv[arg], get_verbosely, get_recover,
- commits, commit_id, write_ref,
- commits_on_stdin);
+
+ ret = fetch_using_walker(argv[arg], get_verbosely, get_recover,
+ commits, commit_id, write_ref,
+ commits_on_stdin);
+
+out:
+ strvec_clear(&index_pack_args);
+ return ret;
}