blob: 936441b652ffd290243d16e4438f3d098049bfd9 [file] [log] [blame]
From 7be9f6f27a64c2041fd9bbeaa61d6193c70c1614 Mon Sep 17 00:00:00 2001
From: Johannes Schindelin <johannes.schindelin@gmx.de>
Date: Wed, 28 Aug 2019 12:22:17 +0200
Subject: path: also guard `.gitmodules` against NTFS Alternate Data Streams
commit 91bd46588e6959e6903e275f78b10bd07830d547 upstream.
We just safe-guarded `.git` against NTFS Alternate Data Stream-related
attack vectors, and now it is time to do the same for `.gitmodules`.
Note: In the added regression test, we refrain from verifying all kinds
of variations between short names and NTFS Alternate Data Streams: as
the new code disallows _all_ Alternate Data Streams of `.gitmodules`, it
is enough to test one in order to know that all of them are guarded
against.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
path.c | 2 +-
t/t0060-path-utils.sh | 7 ++++++-
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/path.c b/path.c
index 4ab11c8d45..93e321bbd0 100644
--- a/path.c
+++ b/path.c
@@ -1300,7 +1300,7 @@ static int is_ntfs_dot_generic(const char *name,
only_spaces_and_periods:
for (;;) {
char c = name[i++];
- if (!c)
+ if (!c || c == ':')
return 1;
if (c != ' ' && c != '.')
return 0;
diff --git a/t/t0060-path-utils.sh b/t/t0060-path-utils.sh
index f2e58b4604..7298439947 100755
--- a/t/t0060-path-utils.sh
+++ b/t/t0060-path-utils.sh
@@ -406,6 +406,9 @@ test_expect_success 'match .gitmodules' '
~1000000 \
~9999999 \
\
+ .gitmodules:\$DATA \
+ "gitmod~4 . :\$DATA" \
+ \
--not \
".gitmodules x" \
".gitmodules .x" \
@@ -430,7 +433,9 @@ test_expect_success 'match .gitmodules' '
\
GI7EB~1 \
GI7EB~01 \
- GI7EB~1X
+ GI7EB~1X \
+ \
+ .gitmodules,:\$DATA
'
test_done
--
2.24.0.393.g34dc348eaf