From: Johannes Schindelin Date: Tue, 11 Oct 2011 19:25:32 +0000 (-0500) Subject: Fix is_gitfile() for files too small or larger than PATH_MAX to be a gitfile X-Git-Tag: v1.7.8-rc0~31^2 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=3ac64370164fb80e92c3c9136210d3a49f1e01fa;p=git.git Fix is_gitfile() for files too small or larger than PATH_MAX to be a gitfile The logic to check whether a file is a gitfile used the heuristics that a gitfile cannot be larger than PATH_MAX or smaller than 10 bytes (as its contents is "gitdir: " followed by a path) and returned early. But it returned with a wrong value. It should have said "this cannot possibly be a gitfile" by returning 0, but it returned 1 instead. Our test cases do not cover this, as the bundle files produced are smaller than PATH_MAX, except on Windows. While at it, fix the faulty logic that the path stored in a gitfile cannot be larger than PATH_MAX-sizeof("gitdir: "). Problem identified by running the test suite in msysGit, offending commit identified by Jörg Rosenkranz. Signed-off-by: Johannes Schindelin Signed-off-by: Junio C Hamano --- diff --git a/transport.c b/transport.c index 1707c5244..a2b1a258d 100644 --- a/transport.c +++ b/transport.c @@ -875,8 +875,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; fd = open(url, O_RDONLY); if (fd < 0)