diff options
author | Ævar Arnfjörð Bjarmason <avarab@gmail.com> | 2022-09-01 01:14:11 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2022-09-02 18:18:12 +0200 |
commit | 4b9d12460d18d02bf6f12cc3c96340e53acf03e3 (patch) | |
tree | fb1edeb7ba896c0a5ccd4aab0786a9803d8eeef3 /builtin/submodule--helper.c | |
parent | submodule--helper: fix most "struct pathspec" memory leaks (diff) | |
download | git-4b9d12460d18d02bf6f12cc3c96340e53acf03e3.tar.xz git-4b9d12460d18d02bf6f12cc3c96340e53acf03e3.zip |
submodule--helper: "struct pathspec" memory leak in module_update()
The module_update() function calls module_list_compute() twice, which
in turn will reset the "struct pathspec" passed to it. Let's instead
track two of them, and clear them both.
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>
Diffstat (limited to 'builtin/submodule--helper.c')
-rw-r--r-- | builtin/submodule--helper.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c index 4bba1c7561..ef56471a8c 100644 --- a/builtin/submodule--helper.c +++ b/builtin/submodule--helper.c @@ -2561,6 +2561,7 @@ cleanup: static int module_update(int argc, const char **argv, const char *prefix) { struct pathspec pathspec = { 0 }; + struct pathspec pathspec2 = { 0 }; struct update_data opt = UPDATE_DATA_INIT; struct list_objects_filter_options filter_options = { 0 }; int ret; @@ -2649,7 +2650,7 @@ static int module_update(int argc, const char **argv, const char *prefix) struct init_cb info = INIT_CB_INIT; if (module_list_compute(argc, argv, opt.prefix, - &pathspec, &list) < 0) { + &pathspec2, &list) < 0) { ret = 1; goto cleanup; } @@ -2672,6 +2673,7 @@ static int module_update(int argc, const char **argv, const char *prefix) cleanup: list_objects_filter_release(&filter_options); clear_pathspec(&pathspec); + clear_pathspec(&pathspec2); return ret; } |