From: Thomas Rast Date: Tue, 28 Feb 2012 10:37:00 GMT Subject: [RFC PATCH 2a] pretty: detect missing \n\n in commit message Message-ID: <5234ba4babd28d9430750d227d629b4d4386b131.1330425111.git.trast@student.ethz.ch> In-Reply-To: <010901fbfffe0f806bb19d556ebc1e512a4697f4.1330425111.git.trast@student.ethz.ch> get_header()'s exit condition is finding the \n\n that separates the commit header from its message. If such a double newline is not present, it segfaults. Catch this case and die(). Signed-off-by: Thomas Rast --- This would be the minimal fix to the pretty machinery so that 'git rev-list --pretty=something HEAD' works when there are such broken commits. If 2b goes in, there isn't really any point as we would never get this far on such a commit. pretty.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pretty.c b/pretty.c index 8688b8f..b7f097d 100644 --- a/pretty.c +++ b/pretty.c @@ -440,7 +440,10 @@ static char *get_header(const struct commit *commit, const char *key) const char *line = commit->buffer; for (;;) { - const char *eol = strchr(line, '\n'), *next; + const char *eol, *next; + if (!line) + die (_("malformed commit object: no separating \\n\\n?")); + eol = strchr(line, '\n'); if (line == eol) return NULL; -- 1.7.9.2.467.g7fee4