Merge branch 'js/sign-empty-commit-fix' into maint
authorJunio C Hamano <gitster@pobox.com>
Thu, 28 Jul 2016 18:25:53 +0000 (11:25 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 28 Jul 2016 18:25:53 +0000 (11:25 -0700)
"git commit --amend --allow-empty-message -S" for a commit without
any message body could have misidentified where the header of the
commit object ends.

* js/sign-empty-commit-fix:
commit -S: avoid invalid pointer with empty message

commit.c
index 24d4715f24f06c4747eb728ffbdab2aadf715e6a..2a90e37519f0b6e9de6e30ed57afe91822441ca3 100644 (file)
--- a/commit.c
+++ b/commit.c
@@ -1092,9 +1092,14 @@ static int do_sign_commit(struct strbuf *buf, const char *keyid)
 {
        struct strbuf sig = STRBUF_INIT;
        int inspos, copypos;
+       const char *eoh;
 
        /* find the end of the header */
-       inspos = strstr(buf->buf, "\n\n") - buf->buf + 1;
+       eoh = strstr(buf->buf, "\n\n");
+       if (!eoh)
+               inspos = buf->len;
+       else
+               inspos = eoh - buf->buf + 1;
 
        if (!keyid || !*keyid)
                keyid = get_signing_key();