[RFC PATCH 2a] pretty: detect missing \n\n in commit message
- From
Thomas Rast <trast@student.ethz.ch>
- Date
- Feb 28, 2012, 10:37 UTC
- 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 <trast@student.ethz.ch> ---
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