aboutsummaryrefslogtreecommitdiff
path: root/update-index.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@osdl.org>2006-05-18 12:07:31 -0700
committerJunio C Hamano <junkio@cox.net>2006-05-18 12:07:31 -0700
commit8dcf39c46e2931ca02b18b1ea3a6b21f446d8de8 (patch)
treefaa37fc9e41acdfb704ece258315fd37ddc6bcb4 /update-index.c
parente8f990b4e4b56f214138cc475c19e5a253e9148e (diff)
downloadgit-8dcf39c46e2931ca02b18b1ea3a6b21f446d8de8.tar.gz
git-8dcf39c46e2931ca02b18b1ea3a6b21f446d8de8.tar.xz
Prevent bogus paths from being added to the index.
With this one, it's now a fatal error to try to add a pathname that cannot be added with "git add", i.e. [torvalds@g5 git]$ git add .git/config fatal: unable to add .git/config to index and [torvalds@g5 git]$ git add foo/../bar fatal: unable to add foo/../bar to index instead of the old "Ignoring path xyz" warning that would end up silently succeeding on any other paths. Signed-off-by: Linus Torvalds <torvalds@osdl.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'update-index.c')
-rw-r--r--update-index.c64
1 files changed, 0 insertions, 64 deletions
diff --git a/update-index.c b/update-index.c
index 3d7e02db2..859efc791 100644
--- a/update-index.c
+++ b/update-index.c
@@ -237,70 +237,6 @@ static int refresh_cache(int really)
return has_errors;
}
-/*
- * We fundamentally don't like some paths: we don't want
- * dot or dot-dot anywhere, and for obvious reasons don't
- * want to recurse into ".git" either.
- *
- * Also, we don't want double slashes or slashes at the
- * end that can make pathnames ambiguous.
- */
-static int verify_dotfile(const char *rest)
-{
- /*
- * The first character was '.', but that
- * has already been discarded, we now test
- * the rest.
- */
- switch (*rest) {
- /* "." is not allowed */
- case '\0': case '/':
- return 0;
-
- /*
- * ".git" followed by NUL or slash is bad. This
- * shares the path end test with the ".." case.
- */
- case 'g':
- if (rest[1] != 'i')
- break;
- if (rest[2] != 't')
- break;
- rest += 2;
- /* fallthrough */
- case '.':
- if (rest[1] == '\0' || rest[1] == '/')
- return 0;
- }
- return 1;
-}
-
-static int verify_path(const char *path)
-{
- char c;
-
- goto inside;
- for (;;) {
- if (!c)
- return 1;
- if (c == '/') {
-inside:
- c = *path++;
- switch (c) {
- default:
- continue;
- case '/': case '\0':
- break;
- case '.':
- if (verify_dotfile(path))
- continue;
- }
- return 0;
- }
- c = *path++;
- }
-}
-
static int add_cacheinfo(unsigned int mode, const unsigned char *sha1,
const char *path, int stage)
{