]> git.ipfire.org Git - thirdparty/git.git/commitdiff
init-db: silence template_dir leak when converting to absolute path
authorAndrzej Hunt <ajrhunt@google.com>
Sun, 14 Mar 2021 18:47:39 +0000 (18:47 +0000)
committerJunio C Hamano <gitster@pobox.com>
Sun, 14 Mar 2021 22:58:00 +0000 (15:58 -0700)
template_dir starts off pointing to either argv or nothing. However if
the value supplied in argv is a relative path, absolute_pathdup() is
used to turn it into an absolute path. absolute_pathdup() allocates
a new string, and we then "leak" it when cmd_init_db() completes.

We don't bother to actually free the return value (instead we UNLEAK
it), because there's no significant advantage to doing so here.
Correctly freeing it would require more significant changes to code flow
which would be more noisy than beneficial.

Signed-off-by: Andrzej Hunt <ajrhunt@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/init-db.c

index d31dbc88374653ca51a946a54fa7b81e9faf907c..efc66523e22c481cf31595f9ecddcd8ddac8b4ce 100644 (file)
@@ -561,8 +561,10 @@ int cmd_init_db(int argc, const char **argv, const char *prefix)
        if (real_git_dir && !is_absolute_path(real_git_dir))
                real_git_dir = real_pathdup(real_git_dir, 1);
 
-       if (template_dir && *template_dir && !is_absolute_path(template_dir))
+       if (template_dir && *template_dir && !is_absolute_path(template_dir)) {
                template_dir = absolute_pathdup(template_dir);
+               UNLEAK(template_dir);
+       }
 
        if (argc == 1) {
                int mkdir_tried = 0;