зеркало из https://github.com/microsoft/git.git
Merge branch 'js/mingw-loosen-overstrict-tree-entry-checks'
Further tweak to a "no backslash in indexed paths" for Windows port we applied earlier. * js/mingw-loosen-overstrict-tree-entry-checks: mingw: safeguard better against backslashes in file names
This commit is contained in:
Коммит
1cf4836865
12
read-cache.c
12
read-cache.c
|
@ -959,7 +959,7 @@ static int verify_dotfile(const char *rest, unsigned mode)
|
||||||
|
|
||||||
int verify_path(const char *path, unsigned mode)
|
int verify_path(const char *path, unsigned mode)
|
||||||
{
|
{
|
||||||
char c;
|
char c = 0;
|
||||||
|
|
||||||
if (has_dos_drive_prefix(path))
|
if (has_dos_drive_prefix(path))
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -974,6 +974,7 @@ int verify_path(const char *path, unsigned mode)
|
||||||
if (is_dir_sep(c)) {
|
if (is_dir_sep(c)) {
|
||||||
inside:
|
inside:
|
||||||
if (protect_hfs) {
|
if (protect_hfs) {
|
||||||
|
|
||||||
if (is_hfs_dotgit(path))
|
if (is_hfs_dotgit(path))
|
||||||
return 0;
|
return 0;
|
||||||
if (S_ISLNK(mode)) {
|
if (S_ISLNK(mode)) {
|
||||||
|
@ -982,6 +983,10 @@ inside:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (protect_ntfs) {
|
if (protect_ntfs) {
|
||||||
|
#ifdef GIT_WINDOWS_NATIVE
|
||||||
|
if (c == '\\')
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
if (is_ntfs_dotgit(path))
|
if (is_ntfs_dotgit(path))
|
||||||
return 0;
|
return 0;
|
||||||
if (S_ISLNK(mode)) {
|
if (S_ISLNK(mode)) {
|
||||||
|
@ -1278,11 +1283,6 @@ static int add_index_entry_with_check(struct index_state *istate, struct cache_e
|
||||||
int skip_df_check = option & ADD_CACHE_SKIP_DFCHECK;
|
int skip_df_check = option & ADD_CACHE_SKIP_DFCHECK;
|
||||||
int new_only = option & ADD_CACHE_NEW_ONLY;
|
int new_only = option & ADD_CACHE_NEW_ONLY;
|
||||||
|
|
||||||
#ifdef GIT_WINDOWS_NATIVE
|
|
||||||
if (protect_ntfs && strchr(ce->name, '\\'))
|
|
||||||
return error(_("filename in tree entry contains backslash: '%s'"), ce->name);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (!(option & ADD_CACHE_KEEP_CACHE_TREE))
|
if (!(option & ADD_CACHE_KEEP_CACHE_TREE))
|
||||||
cache_tree_invalidate_path(istate, ce->name);
|
cache_tree_invalidate_path(istate, ce->name);
|
||||||
|
|
||||||
|
|
|
@ -209,7 +209,7 @@ test_expect_success MINGW 'prevent git~1 squatting on Windows' '
|
||||||
hash="$(echo x | git hash-object -w --stdin)" &&
|
hash="$(echo x | git hash-object -w --stdin)" &&
|
||||||
test_must_fail git update-index --add \
|
test_must_fail git update-index --add \
|
||||||
--cacheinfo 160000,$rev,d\\a 2>err &&
|
--cacheinfo 160000,$rev,d\\a 2>err &&
|
||||||
test_i18ngrep backslash err &&
|
test_i18ngrep "Invalid path" err &&
|
||||||
git -c core.protectNTFS=false update-index --add \
|
git -c core.protectNTFS=false update-index --add \
|
||||||
--cacheinfo 100644,$modules,.gitmodules \
|
--cacheinfo 100644,$modules,.gitmodules \
|
||||||
--cacheinfo 160000,$rev,c \
|
--cacheinfo 160000,$rev,c \
|
||||||
|
|
Загрузка…
Ссылка в новой задаче