]> granicus.if.org Git - cgit/commitdiff
Handle empty/malformed commit messages
authorLars Hjemli <hjemli@gmail.com>
Tue, 16 Jan 2007 17:41:01 +0000 (18:41 +0100)
committerLars Hjemli <hjemli@gmail.com>
Tue, 16 Jan 2007 17:41:01 +0000 (18:41 +0100)
An empty commit message would trigger a segfault in the current
cgit_parse_commit().

Also, make sure that all char-pointers are properly initialized.

parsing.c

index 4173dd4adf7eece4d90f39b4e0b86627ea689e87..4412dee7fcf398945a3161b5d98f733d1282b491 100644 (file)
--- a/parsing.c
+++ b/parsing.c
@@ -145,6 +145,12 @@ struct commitinfo *cgit_parse_commit(struct commit *commit)
 
        ret = xmalloc(sizeof(*ret));
        ret->commit = commit;
+       ret->author = NULL;
+       ret->author_email = NULL;
+       ret->committer = NULL;
+       ret->committer_email = NULL;
+       ret->subject = NULL;
+       ret->msg = NULL;
 
        if (strncmp(p, "tree ", 5))
                die("Bad commit: %s", sha1_to_hex(commit->object.sha1));
@@ -180,12 +186,13 @@ struct commitinfo *cgit_parse_commit(struct commit *commit)
                p = strchr(p, '\n') + 1;
 
        t = strchr(p, '\n');
-       ret->subject = substr(p, t);
-       p = t + 1;
-
-       while (*p == '\n')
-               p = strchr(p, '\n') + 1;
-       ret->msg = p;
+       if (t && *t) {
+               ret->subject = substr(p, t);
+               p = t + 1;
 
+               while (*p == '\n')
+                       p = strchr(p, '\n') + 1;
+               ret->msg = p;
+       }
        return ret;
 }