From: Jeff King Date: Tue, 28 Mar 2017 19:46:40 +0000 (-0400) Subject: create_branch: use xstrfmt for reflog message X-Git-Tag: v2.13.0-rc0~28^2~8 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cddac45219b70f121d30468811a9fbee78fa24f2;p=git create_branch: use xstrfmt for reflog message We generate a reflog message that contains some fixed text plus a branch name, and use a buffer of size PATH_MAX + 20. This mostly works if you assume that refnames are shorter than PATH_MAX, but: 1. That's not necessarily true. PATH_MAX is not always the filesystem's limit. 2. The "20" is not sufficiently large for the fixed text anyway. Let's just switch to a heap buffer so we don't have to even care. Signed-off-by: Jeff King --- diff --git a/branch.c b/branch.c index 6d0ca94cc7..ad5a2299ba 100644 --- a/branch.c +++ b/branch.c @@ -296,14 +296,12 @@ void create_branch(const char *name, const char *start_name, if (!dont_change_ref) { struct ref_transaction *transaction; struct strbuf err = STRBUF_INIT; - char msg[PATH_MAX + 20]; + char *msg; if (forcing) - snprintf(msg, sizeof msg, "branch: Reset to %s", - start_name); + msg = xstrfmt("branch: Reset to %s", start_name); else - snprintf(msg, sizeof msg, "branch: Created from %s", - start_name); + msg = xstrfmt("branch: Created from %s", start_name); transaction = ref_transaction_begin(&err); if (!transaction || @@ -314,6 +312,7 @@ void create_branch(const char *name, const char *start_name, die("%s", err.buf); ref_transaction_free(transaction); strbuf_release(&err); + free(msg); } if (real_ref && track)