Re: Serious bug with pretty format strings & empty bodies?
From: René Scharfe <hidden>
Date: 2016-06-15 22:44:00
Subsystem:
the rest · Maintainer:
Linus Torvalds
Jonathan del Strother schrieb:
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;