diff options
Diffstat (limited to 'lib/private/files/storage/common.php')
-rw-r--r-- | lib/private/files/storage/common.php | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/lib/private/files/storage/common.php b/lib/private/files/storage/common.php index a9ba034f4ee..091f89662d5 100644 --- a/lib/private/files/storage/common.php +++ b/lib/private/files/storage/common.php @@ -494,18 +494,21 @@ abstract class Common implements \OC\Files\Storage\Storage { } /** - * @param $fileName + * @param string $fileName + * @param string $invalidChars * @throws InvalidPathException */ private function scanForInvalidCharacters($fileName, $invalidChars) { - foreach (str_split($fileName) as $char) { - if (strpos($invalidChars, $char) !== false) { - throw new InvalidPathException('File name contains at least one invalid characters'); - } - if (ord($char) >= 0 && ord($char) <= 31) { + foreach(str_split($invalidChars) as $char) { + if (strpos($fileName, $char) !== false) { throw new InvalidPathException('File name contains at least one invalid characters'); } } + + $sanitizedFileName = filter_var($fileName, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW); + if($sanitizedFileName !== $fileName) { + throw new InvalidPathException('File name contains at least one invalid characters'); + } } } |