From: Junio C Hamano Date: Tue, 13 Nov 2007 00:05:37 GMT Subject: Re: [PATCH] for-each-ref: fix off by one read. Message-ID: <7vfxzb1032.fsf@gitster.siamese.dyndns.org> In-Reply-To: <20071112053725.4f0d1940.chriscool@tuxfamily.org> Christian Couder writes: > diff --git a/builtin-for-each-ref.c b/builtin-for-each-ref.c > index 598d4e1..89ea37c 100644 > --- a/builtin-for-each-ref.c > +++ b/builtin-for-each-ref.c > @@ -306,7 +306,7 @@ static const char *find_wholine(const char *who, int wholen, const char *buf, un > if (!eol) > return ""; > eol++; > - if (eol[1] == '\n') > + if (*eol == '\n') > return ""; /* end of header */ > buf = eol; > } Good eyes. This would have broken if (1) we had a header field that consists of a single character and then LF. We would have mistaken such a line as the end of header; or (2) we had a commit or a tag that consists solely of header and no body. We would have read past the terminating NUL. Thanks.