[PATCH v2 3/3] git, help: fix memory leaks in alias listing
- From
Jonatan Holmgren <jonatan@jontes.page>
- Date
- Feb 26, 2026, 20:53 UTC
- Message-ID
- <20260226205339.1535482-4-jonatan@jontes.page>
- In-Reply-To
- <20260226205339.1535482-1-jonatan@jontes.page>
The list_aliases() function sets the util pointer of each list item to a heap-allocated copy of the alias command value. Two callers failed to free these util pointers:
- list_cmds() in git.c collects a string list with STRING_LIST_INIT_DUP and clears it with string_list_clear(&list, 0), which frees the duplicated strings (strdup_strings=1) but not the util pointers. Pass free_util=1 to free them.
- list_cmds_by_config() in help.c calls string_list_sort_u(list, 0) to deduplicate the list before processing completion.commands overrides. When duplicate entries are removed, the util pointer of each discarded item is leaked because free_util=0. Pass free_util=1 to free them.
Reported-by: Jacob Keller <jacob.e.keller@intel.com> Signed-off-by: Jonatan Holmgren <jonatan@jontes.page> --- git.c | 2 +- help.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/git.c b/git.c index 744cb6527e..aeb099ab11 100644 --- a/git.c +++ b/git.c @@ -119,7 +119,7 @@ static int list_cmds(const char *spec) } for (size_t i = 0; i < list.nr; i++) puts(list.items[i].string); - string_list_clear(&list, 0); + string_list_clear(&list, 1); return 0; } diff --git a/help.c b/help.c index 95f576c5c8..3e59d07c37 100644 --- a/help.c +++ b/help.c @@ -422,7 +422,7 @@ void list_cmds_by_config(struct string_list *list) if (repo_config_get_string_tmp(the_repository, "completion.commands", &cmd_list)) return; - string_list_sort_u(list, 0); + string_list_sort_u(list, 1); while (*cmd_list) { struct strbuf sb = STRBUF_INIT;
-- 2.53.0