summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/signature.c2
-rw-r--r--tests/t04-commit.c8
2 files changed, 9 insertions, 1 deletions
diff --git a/src/signature.c b/src/signature.c
index ebb56d7ab..388e8d9c9 100644
--- a/src/signature.c
+++ b/src/signature.c
@@ -279,7 +279,7 @@ int git_signature__parse(git_signature *sig, const char **buffer_out,
if ((name_end = strchr(buffer, '<')) == NULL)
return git__throw(GIT_EOBJCORRUPTED, "Failed to parse signature. Cannot find '<' in signature");
- if ((email_end = strchr(buffer, '>')) == NULL)
+ if ((email_end = strchr(name_end, '>')) == NULL)
return git__throw(GIT_EOBJCORRUPTED, "Failed to parse signature. Cannot find '>' in signature");
if (email_end < name_end)
diff --git a/tests/t04-commit.c b/tests/t04-commit.c
index 58d24bf73..3fb4d370c 100644
--- a/tests/t04-commit.c
+++ b/tests/t04-commit.c
@@ -412,6 +412,14 @@ BEGIN_TEST(parse1, "parse the signature line in a commit")
1234567890,
0);
+ TEST_SIGNATURE_PASS(
+ "author A U Thor> <author@example.com> and others 1234567890\n",
+ "author ",
+ "A U Thor>",
+ "author@example.com",
+ 1234567890,
+ 0);
+
TEST_SIGNATURE_FAIL(
"committer Vicent Marti tanoku@gmail.com> 123456 -0100 \n",
"committer ");