summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 747e250)
raw | patch | inline | side by side (parent: 747e250)
author | Christian Couder <chriscool@tuxfamily.org> | |
Fri, 27 Mar 2009 00:13:01 +0000 (01:13 +0100) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Fri, 27 Mar 2009 08:10:27 +0000 (01:10 -0700) |
When using "git format-patch", "get_patch_filename" in
"log-tree.c" calls "strbuf_splice" that could die with
the following message:
"`pos + len' is too far after the end of the buffer"
if you have:
buf->len < start_len + FORMAT_PATCH_NAME_MAX
but:
buf->len + suffix_len > start_len + FORMAT_PATCH_NAME_MAX
This patch tries to get rid of that bug.
[jc: w/ simplified logic]
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
"log-tree.c" calls "strbuf_splice" that could die with
the following message:
"`pos + len' is too far after the end of the buffer"
if you have:
buf->len < start_len + FORMAT_PATCH_NAME_MAX
but:
buf->len + suffix_len > start_len + FORMAT_PATCH_NAME_MAX
This patch tries to get rid of that bug.
[jc: w/ simplified logic]
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
log-tree.c | patch | blob | history |
diff --git a/log-tree.c b/log-tree.c
index 56a34885924f32559f6829c43a24541cb0fea1ac..5bd29e6994c92268ec576671bb8564b57d1a5c9d 100644 (file)
--- a/log-tree.c
+++ b/log-tree.c
strbuf_addf(buf, commit ? "%04d-" : "%d", nr);
if (commit) {
+ int max_len = start_len + FORMAT_PATCH_NAME_MAX - suffix_len;
+
format_commit_message(commit, "%f", buf, DATE_NORMAL);
- /*
- * Replace characters at the end with the suffix if the
- * filename is too long
- */
- if (buf->len + suffix_len > FORMAT_PATCH_NAME_MAX + start_len)
- strbuf_splice(buf,
- start_len + FORMAT_PATCH_NAME_MAX - suffix_len,
- suffix_len, suffix, suffix_len);
- else
- strbuf_addstr(buf, suffix);
+ if (max_len < buf->len)
+ strbuf_setlen(buf, max_len);
+ strbuf_addstr(buf, suffix);
}
}