diff options
author | Roeland Jago Douma <rullzer@users.noreply.github.com> | 2019-03-20 10:58:10 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-20 10:58:10 +0100 |
commit | 6458dd841c174ff497c77cac655cdc60c49e0270 (patch) | |
tree | 5e48406d71f01161f741f4107536c785fe74095c /lib/private | |
parent | 21c726ae535b068cf7ebb2b74a33d8a19e87e1eb (diff) | |
parent | cc29f5d719b62bd27b47ec6e3189c192eaa28a34 (diff) | |
download | nextcloud-server-6458dd841c174ff497c77cac655cdc60c49e0270.tar.gz nextcloud-server-6458dd841c174ff497c77cac655cdc60c49e0270.zip |
Merge pull request #14691 from nextcloud/rename-mountpoint-within-mountpoint
always allow moving mountpoints inside the same mountpoint
Diffstat (limited to 'lib/private')
-rw-r--r-- | lib/private/Files/View.php | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/lib/private/Files/View.php b/lib/private/Files/View.php index 736859b232b..fa531707648 100644 --- a/lib/private/Files/View.php +++ b/lib/private/Files/View.php @@ -59,6 +59,7 @@ use OCP\Files\InvalidPathException; use OCP\Files\Mount\IMountPoint; use OCP\Files\NotFoundException; use OCP\Files\ReservedWordException; +use OCP\Files\Storage\IStorage; use OCP\ILogger; use OCP\IUser; use OCP\Lock\ILockingProvider; @@ -786,7 +787,8 @@ class View { if ($internalPath1 === '') { if ($mount1 instanceof MoveableMount) { - if ($this->isTargetAllowed($absolutePath2)) { + $sourceParentMount = $this->getMount(dirname($path1)); + if ($sourceParentMount === $mount2 && $this->targetIsNotShared($storage2, $internalPath2)) { /** * @var \OC\Files\Mount\MountPoint | \OC\Files\Mount\MoveableMount $mount1 */ @@ -1753,18 +1755,11 @@ class View { * It is not allowed to move a mount point into a different mount point or * into an already shared folder * - * @param string $target path + * @param IStorage $targetStorage + * @param string $targetInternalPath * @return boolean */ - private function isTargetAllowed($target) { - - list($targetStorage, $targetInternalPath) = \OC\Files\Filesystem::resolvePath($target); - if (!$targetStorage->instanceOfStorage('\OCP\Files\IHomeStorage')) { - \OCP\Util::writeLog('files', - 'It is not allowed to move one mount point into another one', - ILogger::DEBUG); - return false; - } + private function targetIsNotShared(IStorage $targetStorage, string $targetInternalPath) { // note: cannot use the view because the target is already locked $fileId = (int)$targetStorage->getCache()->getId($targetInternalPath); |