init-db: silence template_dir leak when converting to absolute path

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>

Andrzej Hunt committed Mar 14, 2021 at 18:47 UTC 04fe4d75faa237813960f8dcd45a91bd445de235
1 file changed +3 -1
builtin/init-db.c
+3 -1
@@ -561,8 +561,10 @@ int cmd_init_db(int argc, const char **argv, const char *prefix)
561 if (real_git_dir && !is_absolute_path(real_git_dir))
562 real_git_dir = real_pathdup(real_git_dir, 1);
563
564 - if (template_dir && *template_dir && !is_absolute_path(template_dir))
564 + if (template_dir && *template_dir && !is_absolute_path(template_dir)) {
565 template_dir = absolute_pathdup(template_dir);
566 + UNLEAK(template_dir);
567 + }
568
569 if (argc == 1) {
570 int mkdir_tried = 0;