load_branch_decorations: fix memory leak with non-static filters

load_branch_decorations calls normalize_glob_ref on each string of filter's
string_lists. This effectively replaces the potentially non-owning char* of
those items with an owning char*.

Set the strdup_string flag on those string_lists.

This was not caught until now because:
- when passing string_lists already with the strdup_string already set, the
  behaviour was correct
- when passing static string_lists, the new char* remain reachable until
  program exit

Signed-off-by: Nicolas Guichard <nicolas@guichard.eu>
Acked-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Nicolas Guichard 2024-10-09 07:58:18 +00:00 committed by Junio C Hamano
parent 777489f9e0
commit e4d03b7938
1 changed files with 5 additions and 0 deletions

View File

@ -232,6 +232,11 @@ void load_ref_decorations(struct decoration_filter *filter, int flags)
for_each_string_list_item(item, filter->exclude_ref_config_pattern) {
normalize_glob_ref(item, NULL, item->string);
}

/* normalize_glob_ref duplicates the strings */
filter->exclude_ref_pattern->strdup_strings = 1;
filter->include_ref_pattern->strdup_strings = 1;
filter->exclude_ref_config_pattern->strdup_strings = 1;
}
decoration_loaded = 1;
decoration_flags = flags;