Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Appelman <robin@icewind.nl>2019-03-14 17:52:38 +0300
committerRobin Appelman <robin@icewind.nl>2019-03-19 17:56:18 +0300
commitcc29f5d719b62bd27b47ec6e3189c192eaa28a34 (patch)
treec10e0376feea8547a1000c2b69577fefd84369f6 /lib/private/Files/View.php
parent04bc272c728f0f193ea8c86f0127c8a02dfaf545 (diff)
always allow moving mountpoints inside the same mountpoint
even if that mountpoint isn't normally a valid target for moving mounts into Signed-off-by: Robin Appelman <robin@icewind.nl>
Diffstat (limited to 'lib/private/Files/View.php')
-rw-r--r--lib/private/Files/View.php17
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);