aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrzej Hunt <ajrhunt@google.com>2021-03-14 18:47:39 +0000
committerJunio C Hamano <gitster@pobox.com>2021-03-14 15:58:00 -0700
commit04fe4d75faa237813960f8dcd45a91bd445de235 (patch)
treed23621a8ae454533ab195ce4d44065c24aca6baf
parente4de4502e6e32d5ce71fa6fcfc0703a4be411eb7 (diff)
downloadgit-04fe4d75faa237813960f8dcd45a91bd445de235.tar.gz
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>
-rw-r--r--builtin/init-db.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/builtin/init-db.c b/builtin/init-db.c
index d31dbc8837..efc66523e2 100644
--- a/builtin/init-db.c
+++ b/builtin/init-db.c
@@ -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;