]> git.ipfire.org Git - thirdparty/git.git/commitdiff
submodule--helper: don't leak {run,capture}_command() cp.dir argument
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Wed, 31 Aug 2022 23:14:12 +0000 (01:14 +0200)
committerJunio C Hamano <gitster@pobox.com>
Fri, 2 Sep 2022 16:18:12 +0000 (09:18 -0700)
Fix a memory leak in c51f8f94e5b (submodule--helper: run update
procedures from C, 2021-08-24) and 3c3558f0953 (submodule--helper: run
update using child process struct, 2022-03-15) by not allocating
memory in the first place.

The "dir" member of "struct child_process" will not be modified by
that API, and it's declared to be "const char *". So let's not
needlessly duplicate these strings.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Reviewed-by: Glen Choo <chooglen@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/submodule--helper.c

index ef56471a8cf0a5f05974ed091d113c3831bade0e..ebd00f57e571f73f2e611f3c332c71472f2434fa 100644 (file)
@@ -2126,7 +2126,7 @@ static int is_tip_reachable(const char *path, const struct object_id *oid)
        char *hex = oid_to_hex(oid);
 
        cp.git_cmd = 1;
-       cp.dir = xstrdup(path);
+       cp.dir = path;
        cp.no_stderr = 1;
        strvec_pushl(&cp.args, "rev-list", "-n", "1", hex, "--not", "--all", NULL);
 
@@ -2145,7 +2145,7 @@ static int fetch_in_submodule(const char *module_path, int depth, int quiet,
 
        prepare_submodule_repo_env(&cp.env);
        cp.git_cmd = 1;
-       cp.dir = xstrdup(module_path);
+       cp.dir = module_path;
 
        strvec_push(&cp.args, "fetch");
        if (quiet)
@@ -2198,7 +2198,7 @@ static int run_update_command(const struct update_data *ud, int subforce)
        }
        strvec_push(&cp.args, oid);
 
-       cp.dir = xstrdup(ud->sm_path);
+       cp.dir = ud->sm_path;
        prepare_submodule_repo_env(&cp.env);
        if ((ret = run_command(&cp))) {
                switch (ud->update_strategy.type) {