summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Couder <chriscool@tuxfamily.org>2010-07-22 13:18:29 (GMT)
committerJunio C Hamano <gitster@pobox.com>2010-07-23 23:08:14 (GMT)
commit2c048a3038fd4d94e150fbc1dfd2242325ca7db6 (patch)
tree18711aab4aa9fc19a4cff3c39bde1801b033e172
parent971ecbd1f8d1468951274d01103f80dd7d32d110 (diff)
downloadgit-2c048a3038fd4d94e150fbc1dfd2242325ca7db6.zip
git-2c048a3038fd4d94e150fbc1dfd2242325ca7db6.tar.gz
git-2c048a3038fd4d94e150fbc1dfd2242325ca7db6.tar.bz2
revert: fix off by one read when searching the end of a commit subject
A test case is added but the problem can only be seen when running the test case with --valgrind. Signed-off-by: Christian Couder <chriscool@tuxfamily.org> Acked-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--builtin/revert.c2
-rwxr-xr-xt/t3505-cherry-pick-empty.sh20
2 files changed, 20 insertions, 2 deletions
diff --git a/builtin/revert.c b/builtin/revert.c
index 7d68ef7..c170715 100644
--- a/builtin/revert.c
+++ b/builtin/revert.c
@@ -127,7 +127,7 @@ static int get_message(const char *raw_message, struct commit_message *out)
p++;
if (*p) {
p += 2;
- for (eol = p + 1; *eol && *eol != '\n'; eol++)
+ for (eol = p; *eol && *eol != '\n'; eol++)
; /* do nothing */
} else
eol = p;
diff --git a/t/t3505-cherry-pick-empty.sh b/t/t3505-cherry-pick-empty.sh
index e51e505..c10b28c 100755
--- a/t/t3505-cherry-pick-empty.sh
+++ b/t/t3505-cherry-pick-empty.sh
@@ -13,12 +13,30 @@ test_expect_success setup '
git checkout -b empty-branch &&
test_tick &&
- git commit --allow-empty -m "empty"
+ git commit --allow-empty -m "empty" &&
+
+ echo third >> file1 &&
+ git add file1 &&
+ test_tick &&
+ git commit --allow-empty-message -m ""
'
test_expect_success 'cherry-pick an empty commit' '
git checkout master && {
+ git cherry-pick empty-branch^
+ test "$?" = 1
+ }
+'
+
+test_expect_success 'index lockfile was removed' '
+
+ test ! -f .git/index.lock
+
+'
+
+test_expect_success 'cherry-pick a commit with an empty message' '
+ git checkout master && {
git cherry-pick empty-branch
test "$?" = 1
}