diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2015-03-16 09:58:41 +0100 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2015-03-16 09:58:41 +0100 |
commit | 69277736483ad3352f82ba882977e3767884ac49 (patch) | |
tree | 97ed7ae504898962423740cfe5506126d892d18a /lib | |
parent | b159c7f27404c639f06aac2d0188f0dd59575ff1 (diff) | |
parent | 80ef53eff09886efcbe983c1db383fc5290b2048 (diff) | |
download | nextcloud-server-69277736483ad3352f82ba882977e3767884ac49.tar.gz nextcloud-server-69277736483ad3352f82ba882977e3767884ac49.zip |
Merge pull request #14776 from owncloud/fix-14629-master
verify the file name length not to exceed 255 characters + verify path d...
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/files/storage/common.php | 5 | ||||
-rw-r--r-- | lib/private/files/view.php | 5 | ||||
-rw-r--r-- | lib/public/files/filenametoolongexception.php | 34 |
3 files changed, 44 insertions, 0 deletions
diff --git a/lib/private/files/storage/common.php b/lib/private/files/storage/common.php index 8549d5a1fad..031a2f1cb7a 100644 --- a/lib/private/files/storage/common.php +++ b/lib/private/files/storage/common.php @@ -13,6 +13,7 @@ use OC\Files\Cache\Scanner; use OC\Files\Cache\Storage; use OC\Files\Filesystem; use OC\Files\Cache\Watcher; +use OCP\Files\FileNameTooLongException; use OCP\Files\InvalidCharacterInPathException; use OCP\Files\InvalidPathException; use OCP\Files\ReservedWordException; @@ -460,6 +461,10 @@ abstract class Common implements \OC\Files\Storage\Storage { * @inheritdoc */ public function verifyPath($path, $fileName) { + if (isset($fileName[255])) { + throw new FileNameTooLongException(); + } + // NOTE: $path will remain unverified for now if (\OC_Util::runningOnWindows()) { $this->verifyWindowsPath($fileName); diff --git a/lib/private/files/view.php b/lib/private/files/view.php index 8b448abeb89..53e13396621 100644 --- a/lib/private/files/view.php +++ b/lib/private/files/view.php @@ -11,6 +11,7 @@ namespace OC\Files; use OC\Files\Cache\Updater; use OC\Files\Mount\MoveableMount; +use OCP\Files\FileNameTooLongException; use OCP\Files\InvalidCharacterInPathException; use OCP\Files\InvalidPathException; use OCP\Files\ReservedWordException; @@ -585,6 +586,8 @@ class View { ); } if ($run) { + $this->verifyPath(dirname($path2), basename($path2)); + $mp1 = $this->getMountPoint($path1 . $postFix1); $mp2 = $this->getMountPoint($path2 . $postFix2); $manager = Filesystem::getMountManager(); @@ -1573,6 +1576,8 @@ class View { throw new InvalidPathException($l10n->t('File name is a reserved word')); } catch (InvalidCharacterInPathException $ex) { throw new InvalidPathException($l10n->t('File name contains at least one invalid character')); + } catch (FileNameTooLongException $ex) { + throw new InvalidPathException($l10n->t('File name is too long')); } } } diff --git a/lib/public/files/filenametoolongexception.php b/lib/public/files/filenametoolongexception.php new file mode 100644 index 00000000000..02686f29e4e --- /dev/null +++ b/lib/public/files/filenametoolongexception.php @@ -0,0 +1,34 @@ +<?php +/** + * ownCloud + * + * @author Thomas Müller + * @copyright 2013 Thomas Müller deepdiver@owncloud.com + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE + * License as published by the Free Software Foundation; either + * version 3 of the License, or any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with this library. If not, see <http://www.gnu.org/licenses/>. + * + */ + +/** + * Public interface of ownCloud for apps to use. + * Files/ReservedWordException class + */ + +// use OCP namespace for all classes that are considered public. +// This means that they should be used by apps instead of the internal ownCloud classes +namespace OCP\Files; + + +class FileNameTooLongException extends InvalidPathException { +} |