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>
This commit is contained in:
Ævar Arnfjörð Bjarmason 2022-09-01 01:14:11 +02:00 committed by Junio C Hamano
parent 8fb201d4da
commit 4b9d12460d

View File

@ -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;
}