From: Phil Hord Date: Tue, 11 Oct 2011 20:58:10 GMT Subject: Re: [PATCH] Fix is_gitfile() for files larger than PATH_MAX Message-ID: In-Reply-To: <7vy5wre0n7.fsf@alter.siamese.dyndns.org> On Tue, Oct 11, 2011 at 4:25 PM, Junio C Hamano wrote: >> @@ -868,8 +868,8 @@ static int is_gitfile(const char *url) >>               return 0; >>       if (!S_ISREG(st.st_mode)) >>               return 0; >> -     if (st.st_size < 10 || st.st_size > PATH_MAX) >> -             return 1; >> +     if (st.st_size < 10 || st.st_size > 9 + PATH_MAX) >> +             return 0; > > We are asked if the file is likely to be a single-liner "gitfile: ", > and were answering yes when it is a very short file (less than 10 bytes) > that cannot possibly even contain "gitfile: " prefix. > > I suspect that we can and should get rid of the "cannot be very long" > check altogether---we do open and check the file, and after all it is not > like we are throwing different strings as "url" argument to this function > at random and this function needs heuristics to reject bogus input > early. The argument is an input from the user. > > Quite an embarrasing bug. Thanks for spotting. Yes, and it's _my_ embarrassing bug. I've caught this and have it in a re-roll, but I got mired up and haven't submitted it again. I'll try to do so today. Phil