Re: Serious bug with pretty format strings & empty bodies?
From: Jonathan del Strother <hidden>
Date: 2016-06-15 22:44:00
On Dec 20, 2007 12:20 PM, René Scharfe [off-list ref] wrote:
quoted hunk ↗ jump to hunk
Jonathan del Strother schrieb:quoted
On Dec 19, 2007 11:23 PM, René Scharfe [off-list ref] wrote:quoted
Just a shot in the dark: does this patch on top of master make a difference?No luck with that, I'm afraid.And how is this one? The first chunk is the same as in the last try -- it guards against commit messages ending with a NUL without a prior \n _and_ being followed by a \n (in memory which shouldn't be accessed by us at all as it doesn't belong to the commit message). I guess that's quite rare. The second chunk keeps the body offset from being incremented by the for loop if we've already found a terminating NUL.diff --git a/pretty.c b/pretty.c index 9db75b4..5b1078b 100644 --- a/pretty.c +++ b/pretty.c@@ -412,7 +412,7 @@ static void parse_commit_header(struct format_commit_context *context) if (i == eol) { state++; /* strip empty lines */ - while (msg[eol + 1] == '\n') + while (msg[eol] == '\n' && msg[eol + 1] == '\n') eol++; } else if (!prefixcmp(msg + i, "author ")) { context->author.off = i + 7;@@ -425,6 +425,8 @@ static void parse_commit_header(struct format_commit_context *context) context->encoding.len = eol - i - 9; } i = eol; + if (!msg[i]) + break; } context->body_off = i; context->commit_header_parsed = 1;
Winnar! Yep, that seems to have fixed things. Wonder how I managed to get the null into the commit message...