diff options
author | René Scharfe <l.s.r@web.de> | 2020-02-04 22:17:02 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2020-02-05 10:24:15 -0800 |
commit | 15a4205d967111856279993b8aca24d4ffae787b (patch) | |
tree | 27fe344ca829cc6fa8968f5531f9938c184e2c9d /builtin | |
parent | name-rev: respect const qualifier (diff) | |
download | tgif-15a4205d967111856279993b8aca24d4ffae787b.tar.xz |
name-rev: don't leak path copy in name_ref()
name_ref() duplicates the path string and passes it to name_rev(), which
either puts it into a commit slab or ignores it if there is already a
better name, leaking it. Move the duplication to name_rev() and release
the copy in the latter case.
Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin')
-rw-r--r-- | builtin/name-rev.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/builtin/name-rev.c b/builtin/name-rev.c index 2e6820bd5b..3e22a0503e 100644 --- a/builtin/name-rev.c +++ b/builtin/name-rev.c @@ -121,6 +121,8 @@ static void name_rev(struct commit *start_commit, if (deref) tip_name = to_free = xstrfmt("%s^0", tip_name); + else + tip_name = to_free = xstrdup(tip_name); if (!create_or_update_name(start_commit, tip_name, taggerdate, 0, 0, from_tag)) { @@ -323,7 +325,7 @@ static int name_ref(const char *path, const struct object_id *oid, int flags, vo if (taggerdate == TIME_MAX) taggerdate = commit->date; path = name_ref_abbrev(path, can_abbreviate_output); - name_rev(commit, xstrdup(path), taggerdate, from_tag, deref); + name_rev(commit, path, taggerdate, from_tag, deref); } return 0; } |