Fix is_gitfile() for files larger than PATH_MAX

The logic to check whether a file is a gitfile used the heuristics that
the file cannot be larger than PATH_MAX. But in that case it returned the
wrong value. 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("gitfile: ").

Problem identified by running the test suite in msysGit, offending commit
identified by Jörg Rosenkranz.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This commit is contained in:
Johannes Schindelin 2011-10-11 14:07:48 -05:00
parent 2e51681cb9
commit f0e86b3b66

View file

@ -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;
fd = open(url, O_RDONLY);
if (fd < 0)