Re: Serious bug with pretty format strings & empty bodies?
- From
Jonathan del Strother <maillist@steelskies.com>
- Date
- Dec 20, 2007, 13:08 UTC
- Message-ID
- <57518fd10712200508x4b15f9acy10aed83a3cebeba@mail.gmail.com>
- In-Reply-To
- <476A5DFF.40803@lsrfire.ath.cx>
On Dec 20, 2007 12:20 PM, René Scharfe <rene.scharfe@lsrfire.ath.cx> wrote:
Show 38 quoted lines
> Jonathan del Strother schrieb:
> > On Dec 19, 2007 11:23 PM, René Scharfe <rene.scharfe@lsrfire.ath.cx> wrote:
> >> 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...