summaryrefslogtreecommitdiffstats
path: root/lib/private/files/storage/common.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/private/files/storage/common.php')
-rw-r--r--lib/private/files/storage/common.php15
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');
+ }
}
}