summaryrefslogtreecommitdiff
path: root/read-cache.c
diff options
context:
space:
mode:
authorLibravatar Johannes Schindelin <johannes.schindelin@gmx.de>2019-12-04 21:26:31 +0100
committerLibravatar Johannes Schindelin <johannes.schindelin@gmx.de>2019-12-06 16:26:55 +0100
commitd3ac8c3f27a507d0489d18b51d6deba6364a99ce (patch)
tree7571888b2d487ce6d825045231f02fb1b97dc6a8 /read-cache.c
parentGit 2.15.3 (diff)
parentGit 2.14.6 (diff)
downloadtgif-d3ac8c3f27a507d0489d18b51d6deba6364a99ce.tar.xz
Sync with 2.14.6
* maint-2.14: (28 commits) Git 2.14.6 mingw: handle `subst`-ed "DOS drives" mingw: refuse to access paths with trailing spaces or periods mingw: refuse to access paths with illegal characters unpack-trees: let merged_entry() pass through do_add_entry()'s errors quote-stress-test: offer to test quoting arguments for MSYS2 sh t6130/t9350: prepare for stringent Win32 path validation quote-stress-test: allow skipping some trials quote-stress-test: accept arguments to test via the command-line tests: add a helper to stress test argument quoting mingw: fix quoting of arguments Disallow dubiously-nested submodule git directories protect_ntfs: turn on NTFS protection by default path: also guard `.gitmodules` against NTFS Alternate Data Streams is_ntfs_dotgit(): speed it up mingw: disallow backslash characters in tree objects' file names path: safeguard `.git` against NTFS Alternate Streams Accesses clone --recurse-submodules: prevent name squatting on Windows is_ntfs_dotgit(): only verify the leading segment test-path-utils: offer to run a protectNTFS/protectHFS benchmark ...
Diffstat (limited to 'read-cache.c')
-rw-r--r--read-cache.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/read-cache.c b/read-cache.c
index 8cef7b6715..2a280b83cc 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -848,6 +848,9 @@ int verify_path(const char *path, unsigned mode)
if (has_dos_drive_prefix(path))
return 0;
+ if (!is_valid_path(path))
+ return 0;
+
goto inside;
for (;;) {
if (!c)
@@ -875,7 +878,15 @@ inside:
if ((c == '.' && !verify_dotfile(path, mode)) ||
is_dir_sep(c) || c == '\0')
return 0;
+ } else if (c == '\\' && protect_ntfs) {
+ if (is_ntfs_dotgit(path))
+ return 0;
+ if (S_ISLNK(mode)) {
+ if (is_ntfs_dotgitmodules(path))
+ return 0;
+ }
}
+
c = *path++;
}
}