summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2006-12-09 04:04:21 (GMT)
committerJunio C Hamano <junkio@cox.net>2006-12-09 04:11:21 (GMT)
commit90ffefe564cd849f88b1d1b5817eb25e3d57521b (patch)
treec5ef861d53feab8f9c4cb1a1c6ff0c6e7a967d40
parent62b339a544b1fa5199de7571c460d770cb286e65 (diff)
downloadgit-90ffefe564cd849f88b1d1b5817eb25e3d57521b.zip
git-90ffefe564cd849f88b1d1b5817eb25e3d57521b.tar.gz
git-90ffefe564cd849f88b1d1b5817eb25e3d57521b.tar.bz2
shortlog: fix segfault on empty authorname
The old code looked backwards from the email address to parse the name, allowing an arbitrary number of spaces between the two. However, in the case of no name, we looked back too far to the 'author' (or 'Author:') header. Instead, remove at most one space between name and address. The bug was triggered by commit febf7ea4bed from linux-2.6. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r--builtin-shortlog.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/builtin-shortlog.c b/builtin-shortlog.c
index f1124e2..7a2ddfe 100644
--- a/builtin-shortlog.c
+++ b/builtin-shortlog.c
@@ -188,7 +188,7 @@ static void read_from_stdin(struct path_list *list)
bob = buffer + strlen(buffer);
else {
offset = 8;
- while (isspace(bob[-1]))
+ if (isspace(bob[-1]))
bob--;
}
@@ -236,7 +236,7 @@ static void get_from_rev(struct rev_info *rev, struct path_list *list)
author = scratch;
authorlen = strlen(scratch);
} else {
- while (bracket[-1] == ' ')
+ if (bracket[-1] == ' ')
bracket--;
author = buffer + 7;