Merge pull request #14776 from owncloud/fix-14629-master
verify the file name length not to exceed 255 characters + verify path d...
This commit is contained in:
commit
6927773648
4 changed files with 54 additions and 0 deletions
|
@ -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);
|
||||
|
|
|
@ -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'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
34
lib/public/files/filenametoolongexception.php
Normal file
34
lib/public/files/filenametoolongexception.php
Normal file
|
@ -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 {
|
||||
}
|
|
@ -22,6 +22,16 @@ class PathVerification extends \Test\TestCase {
|
|||
$this->view = new View();
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \OCP\Files\InvalidPathException
|
||||
* @expectedExceptionMessage File name is too long
|
||||
*/
|
||||
public function testPathVerificationFileNameTooLong() {
|
||||
$fileName = str_repeat('a', 500);
|
||||
$this->view->verifyPath('', $fileName);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @dataProvider providesEmptyFiles
|
||||
* @expectedException \OCP\Files\InvalidPathException
|
||||
|
|
Loading…
Reference in a new issue