From: Ævar Arnfjörð Bjarmason Date: Fri, 4 Mar 2022 18:32:11 +0000 (+0100) Subject: submodule--helper: fix trivial leak in module_add() X-Git-Tag: v2.36.0-rc0~72^2~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8f79015111f879451ceff83bbb9b4a29ebbbeb1d;p=thirdparty%2Fgit.git submodule--helper: fix trivial leak in module_add() Fix a memory leak in code added in a6226fd772b (submodule--helper: convert the bulk of cmd_add() to C, 2021-08-10). If "realrepo" isn't a copy of the "repo" member we should free() it. Signed-off-by: Ævar Arnfjörð Bjarmason Signed-off-by: Junio C Hamano --- diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c index eeacefcc38..13b4841327 100644 --- a/builtin/submodule--helper.c +++ b/builtin/submodule--helper.c @@ -3309,6 +3309,7 @@ static int module_add(int argc, const char **argv, const char *prefix) { int force = 0, quiet = 0, progress = 0, dissociate = 0; struct add_data add_data = ADD_DATA_INIT; + char *to_free = NULL; struct option options[] = { OPT_STRING('b', "branch", &add_data.branch, N_("branch"), @@ -3360,7 +3361,8 @@ static int module_add(int argc, const char **argv, const char *prefix) "of the working tree")); /* dereference source url relative to parent's url */ - add_data.realrepo = resolve_relative_url(add_data.repo, NULL, 1); + to_free = resolve_relative_url(add_data.repo, NULL, 1); + add_data.realrepo = to_free; } else if (is_dir_sep(add_data.repo[0]) || strchr(add_data.repo, ':')) { add_data.realrepo = add_data.repo; } else { @@ -3413,6 +3415,7 @@ static int module_add(int argc, const char **argv, const char *prefix) } configure_added_submodule(&add_data); free(add_data.sm_path); + free(to_free); return 0; }