diff options
author | Roeland Jago Douma <rullzer@users.noreply.github.com> | 2021-03-26 10:44:43 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-26 10:44:43 +0100 |
commit | d65ce19f6e9c3c83bc41e0ce330577b508aacdb6 (patch) | |
tree | a591fc001e3a992e1272fd5ee47536545b9ccbef | |
parent | cc5c93ffb3bc5d25678bf689c86eca804f792a85 (diff) | |
parent | fdf7eb10a2ab782ad1167c808ffee595832988dc (diff) | |
download | nextcloud-server-d65ce19f6e9c3c83bc41e0ce330577b508aacdb6.tar.gz nextcloud-server-d65ce19f6e9c3c83bc41e0ce330577b508aacdb6.zip |
Merge pull request #26291 from nextcloud/backport/21484/stable21
[stable21] show better error messages when a file with a forbidden path is encountered
-rw-r--r-- | lib/private/Files/Storage/Local.php | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/lib/private/Files/Storage/Local.php b/lib/private/Files/Storage/Local.php index 944b0b69959..c21364847e1 100644 --- a/lib/private/Files/Storage/Local.php +++ b/lib/private/Files/Storage/Local.php @@ -288,16 +288,14 @@ class Local extends \OC\Files\Storage\Common { } } - private function treeContainsBlacklistedFile(string $path): bool { + private function checkTreeForForbiddenItems(string $path) { $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($path)); foreach ($iterator as $file) { /** @var \SplFileInfo $file */ if (Filesystem::isFileBlacklisted($file->getBasename())) { - return true; + throw new ForbiddenException('Invalid path: ' . $file->getPathname(), false); } } - - return false; } public function rename($path1, $path2) { @@ -337,9 +335,7 @@ class Local extends \OC\Files\Storage\Common { return $result; } - if ($this->treeContainsBlacklistedFile($this->getSourcePath($path1))) { - throw new ForbiddenException('Invalid path', false); - } + $this->checkTreeForForbiddenItems($this->getSourcePath($path1)); } return rename($this->getSourcePath($path1), $this->getSourcePath($path2)); @@ -437,7 +433,7 @@ class Local extends \OC\Files\Storage\Common { */ public function getSourcePath($path) { if (Filesystem::isFileBlacklisted($path)) { - throw new ForbiddenException('Invalid path', false); + throw new ForbiddenException('Invalid path: ' . $path, false); } $fullPath = $this->datadir . $path; |