Skip to content

Commit

Permalink
init-db: silence template_dir leak when converting to absolute path
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
ahunt authored and gitster committed Mar 14, 2021
1 parent e4de450 commit 04fe4d7
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion builtin/init-db.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit 04fe4d7

Please sign in to comment.