diff options
author | Nicolas Guichard <nicolas@guichard.eu> | 2024-10-09 09:58:18 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2024-10-09 19:52:44 +0200 |
commit | e4d03b79386e3bd0dba1c8096f8602490bda99d6 (patch) | |
tree | 68f02a74edb7e46caa3aa81c6532639b5960e46f /log-tree.c | |
parent | Git 2.47 (diff) | |
download | git-e4d03b79386e3bd0dba1c8096f8602490bda99d6.tar.xz git-e4d03b79386e3bd0dba1c8096f8602490bda99d6.zip |
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>
Diffstat (limited to 'log-tree.c')
-rw-r--r-- | log-tree.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/log-tree.c b/log-tree.c index 3758e0d3b8..c65ebd2920 100644 --- a/log-tree.c +++ b/log-tree.c @@ -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; |