mirror of
https://github.com/git/git.git
synced 2024-10-28 12:59:41 +01:00
bundle.c: don't leak the "args" in the "struct child_process"
Fix a leak that's been here since 7366096de9
(bundle API: change
"flags" to be "extra_index_pack_args", 2021-09-05). If we can't verify
the bundle, we didn't call child_process_clear() to clear the "args".
But rather than adding an additional child_process_clear() call, let's
verify the bundle before we start preparing the process we're going to
spawn. If we fail to verify, we don't need to push anything to the
child_process "args".
Helped-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
b2e5d75d17
commit
53537c6c17
1 changed files with 4 additions and 2 deletions
6
bundle.c
6
bundle.c
|
@ -627,6 +627,10 @@ int unbundle(struct repository *r, struct bundle_header *header,
|
||||||
enum verify_bundle_flags flags)
|
enum verify_bundle_flags flags)
|
||||||
{
|
{
|
||||||
struct child_process ip = CHILD_PROCESS_INIT;
|
struct child_process ip = CHILD_PROCESS_INIT;
|
||||||
|
|
||||||
|
if (verify_bundle(r, header, flags))
|
||||||
|
return -1;
|
||||||
|
|
||||||
strvec_pushl(&ip.args, "index-pack", "--fix-thin", "--stdin", NULL);
|
strvec_pushl(&ip.args, "index-pack", "--fix-thin", "--stdin", NULL);
|
||||||
|
|
||||||
/* If there is a filter, then we need to create the promisor pack. */
|
/* If there is a filter, then we need to create the promisor pack. */
|
||||||
|
@ -638,8 +642,6 @@ int unbundle(struct repository *r, struct bundle_header *header,
|
||||||
strvec_clear(extra_index_pack_args);
|
strvec_clear(extra_index_pack_args);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (verify_bundle(r, header, flags))
|
|
||||||
return -1;
|
|
||||||
ip.in = bundle_fd;
|
ip.in = bundle_fd;
|
||||||
ip.no_stdout = 1;
|
ip.no_stdout = 1;
|
||||||
ip.git_cmd = 1;
|
ip.git_cmd = 1;
|
||||||
|
|
Loading…
Reference in a new issue