Skip to content

Commit

Permalink
Fix is_gitfile() for files too small or larger than PATH_MAX to be a …
Browse files Browse the repository at this point in the history
…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 <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Johannes Schindelin authored and Junio C Hamano committed Oct 11, 2011
1 parent 0c80fdb commit 3ac6437
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions transport.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit 3ac6437

Please sign in to comment.