]> git.ipfire.org Git - thirdparty/git.git/commitdiff
http-fetch: clear leaking git-index-pack(1) arguments
authorPatrick Steinhardt <ps@pks.im>
Tue, 24 Sep 2024 21:50:09 +0000 (17:50 -0400)
committerJunio C Hamano <gitster@pobox.com>
Wed, 25 Sep 2024 17:24:52 +0000 (10:24 -0700)
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>
http-fetch.c

index d460bb1837d06f1c49f43e33e37423069a6c22fb..02ab80533f0e34547d831b0af71ddcb91dd32903 100644 (file)
@@ -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;
 }