aboutsummaryrefslogtreecommitdiff
path: root/lib/fstree/filename_sane.c
diff options
context:
space:
mode:
authorDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2020-12-29 12:10:46 +0100
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2020-12-29 12:10:46 +0100
commit0e3bb2104a8e3fd07e201e6ba99f8d017fdc72a8 (patch)
tree1a494a001339a86f418c4dc96be85202c457ee25 /lib/fstree/filename_sane.c
parent06a8c73c53a78c84d736ee7176522ed21a501ab4 (diff)
Fix normalization of slashes in filenames
All paths were canonicalized internally, which includes filtering sequences of slashes and converting backslashes to slashes. Furthermore, when unpacking files, filenames are sanity checked and rejected if they contain forward OR backward slashes. This is a problem on Unix-like systems, where files containing backslashes are a legitimate use case (*cough* SystemD *cough*). This patch removes the backslash conversion from the canonicalization and modifies the sanity check to reject backslashes only on Windows. Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'lib/fstree/filename_sane.c')
-rw-r--r--lib/fstree/filename_sane.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/fstree/filename_sane.c b/lib/fstree/filename_sane.c
index b0f8c90..91c15da 100644
--- a/lib/fstree/filename_sane.c
+++ b/lib/fstree/filename_sane.c
@@ -57,7 +57,7 @@ bool is_filename_sane(const char *name, bool check_os_specific)
return false;
while (*name != '\0') {
- if (*name == '/' || *name == '\\')
+ if (*name == '/')
return false;
#if defined(_WIN32) || defined(__WINDOWS__) || defined(TEST_WIN32)
@@ -66,7 +66,7 @@ bool is_filename_sane(const char *name, bool check_os_specific)
return false;
if (*name == '"' || *name == '|' || *name == '?')
return false;
- if (*name == '*' || *name <= 31)
+ if (*name == '*' || *name == '\\' || *name <= 31)
return false;
}
#endif