Skip to content

Commit 8fc9b86

Browse files
authored
Merge pull request #2437 from dscho/only-error-on-backslash-in-index
Disallow writing, but not fetching commits with file names containing backslashes
2 parents 0c54f76 + d192fa9 commit 8fc9b86

File tree

3 files changed

+9
-9
lines changed

3 files changed

+9
-9
lines changed

read-cache.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1278,6 +1278,11 @@ static int add_index_entry_with_check(struct index_state *istate, struct cache_e
12781278
int skip_df_check = option & ADD_CACHE_SKIP_DFCHECK;
12791279
int new_only = option & ADD_CACHE_NEW_ONLY;
12801280

1281+
#ifdef GIT_WINDOWS_NATIVE
1282+
if (protect_ntfs && strchr(ce->name, '\\'))
1283+
return error(_("filename in tree entry contains backslash: '%s'"), ce->name);
1284+
#endif
1285+
12811286
if (!(option & ADD_CACHE_KEEP_CACHE_TREE))
12821287
cache_tree_invalidate_path(istate, ce->name);
12831288

t/t7415-submodule-names.sh

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -207,16 +207,17 @@ test_expect_success MINGW 'prevent git~1 squatting on Windows' '
207207
git hash-object -w --stdin)" &&
208208
rev="$(git rev-parse --verify HEAD)" &&
209209
hash="$(echo x | git hash-object -w --stdin)" &&
210+
test_must_fail git update-index --add \
211+
--cacheinfo 160000,$rev,d\\a 2>err &&
212+
test_i18ngrep backslash err &&
210213
git -c core.protectNTFS=false update-index --add \
211214
--cacheinfo 100644,$modules,.gitmodules \
212215
--cacheinfo 160000,$rev,c \
213216
--cacheinfo 160000,$rev,d\\a \
214217
--cacheinfo 100644,$hash,d./a/x \
215218
--cacheinfo 100644,$hash,d./a/..git &&
216219
test_tick &&
217-
git -c core.protectNTFS=false commit -m "module" &&
218-
test_must_fail git show HEAD: 2>err &&
219-
test_i18ngrep backslash err
220+
git -c core.protectNTFS=false commit -m "module"
220221
) &&
221222
test_must_fail git -c core.protectNTFS=false \
222223
clone --recurse-submodules squatting squatting-clone 2>err &&

tree-walk.c

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,6 @@ static int decode_tree_entry(struct tree_desc *desc, const char *buf, unsigned l
4343
strbuf_addstr(err, _("empty filename in tree entry"));
4444
return -1;
4545
}
46-
#ifdef GIT_WINDOWS_NATIVE
47-
if (protect_ntfs && strchr(path, '\\')) {
48-
strbuf_addf(err, _("filename in tree entry contains backslash: '%s'"), path);
49-
return -1;
50-
}
51-
#endif
5246
len = strlen(path) + 1;
5347

5448
/* Initialize the descriptor entry */

0 commit comments

Comments
 (0)