Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
log-tree: fix patch filename computation in "git format-patch"
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
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
747e250
)
diff --git
a/log-tree.c
b/log-tree.c
index 56a34885924f32559f6829c43a24541cb0fea1ac..5bd29e6994c92268ec576671bb8564b57d1a5c9d 100644
(file)
--- a/
log-tree.c
+++ b/
log-tree.c
@@
-187,17
+187,12
@@
void get_patch_filename(struct commit *commit, int nr, const char *suffix,
strbuf_addf(buf, commit ? "%04d-" : "%d", nr);
if (commit) {
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);
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);
}
}
}
}