diff options
context:
space:
mode:
authorBryce Kwon <bryce@brycekwon.com>
committerBryce Kwon <bryce@brycekwon.com>
commit
parent
tree
download
Backfill an absent commit message
Diffstat (limited to '')
-rw-r--r--source/parsing.c20
1 file changed, 13 insertions, 7 deletions
diff --git a/source/parsing.c b/source/parsing.c
index ee2b65c..a7e46de 100644
--- a/source/parsing.c
+++ b/source/parsing.c
@@ -175,14 +175,20 @@ struct commitinfo *cgit_parse_commit(struct commit *commit)
p = next_header_line(p);
while (p && *p == '\n')
p++;
- if (!p)
- return ret;
- t = strchrnul(p, '\n');
- ret->subject = substr(p, t);
- while (*t == '\n')
- t++;
- ret->msg = xstrdup(t);
+ if (p) {
+ t = strchrnul(p, '\n');
+ ret->subject = substr(p, t);
+ while (*t == '\n')
+ t++;
+ ret->msg = xstrdup(t);
+ } else {
+ // A crafted commit can end right after its headers with no
+ // message. Keep subject and msg as empty strings so callers
+ // can treat them as text unconditionally.
+ ret->subject = xstrdup("");
+ ret->msg = xstrdup("");
+ }
reencode(&ret->author, ret->msg_encoding, PAGE_ENCODING);
reencode(&ret->author_email, ret->msg_encoding, PAGE_ENCODING);