From cc2fc7c2f07c4a2aba5a653137ac9b489e05df43 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Mon, 24 Nov 2014 13:39:12 -0500 Subject: [PATCH] verify_dotfile(): reject .git case-insensitively We do not allow ".git" to enter into the index as a path component, because checking out the result to the working tree may causes confusion for subsequent git commands. However, on case-insensitive file systems, ".Git" or ".GIT" is the same. We should catch and prevent those, too. Note that technically we could allow this for repos on case-sensitive filesystems. But there's not much point. It's unlikely that anybody cares, and it creates a repository that is unexpectedly non-portable to other systems. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- read-cache.c | 5 +++-- t/t1014-read-tree-confusing.sh | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/read-cache.c b/read-cache.c index 33dd676ccb..122be494f3 100644 --- a/read-cache.c +++ b/read-cache.c @@ -759,9 +759,10 @@ static int verify_dotfile(const char *rest) * shares the path end test with the ".." case. */ case 'g': - if (rest[1] != 'i') + case 'G': + if (rest[1] != 'i' && rest[1] != 'I') break; - if (rest[2] != 't') + if (rest[2] != 't' && rest[2] != 'T') break; rest += 2; /* fallthrough */ diff --git a/t/t1014-read-tree-confusing.sh b/t/t1014-read-tree-confusing.sh index 7b31d53196..eff8aedf7a 100755 --- a/t/t1014-read-tree-confusing.sh +++ b/t/t1014-read-tree-confusing.sh @@ -27,6 +27,7 @@ done <<-\EOF . .. .git +.GIT EOF test_done -- 2.11.4.GIT