[Pkg-owncloud-commits] [owncloud] 185/273: don't move a share mount point into a different mount point

David Prévot taffit at moszumanska.debian.org
Fri Jul 4 03:13:15 UTC 2014


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository owncloud.

commit bb935978fa1af1dd304bf2a5aad4d135dfea8268
Author: Bjoern Schiessle <schiessle at owncloud.com>
Date:   Tue Jul 1 13:33:21 2014 +0200

    don't move a share mount point into a different mount point
---
 apps/files_sharing/lib/external/mount.php |  1 +
 apps/files_sharing/lib/helper.php         |  1 +
 apps/files_sharing/lib/sharedmount.php    | 10 --------
 lib/private/files/view.php                | 41 +++++++++++++++++++++++++------
 4 files changed, 36 insertions(+), 17 deletions(-)

diff --git a/apps/files_sharing/lib/external/mount.php b/apps/files_sharing/lib/external/mount.php
index a42a12f..e564dde 100644
--- a/apps/files_sharing/lib/external/mount.php
+++ b/apps/files_sharing/lib/external/mount.php
@@ -38,6 +38,7 @@ class Mount extends \OC\Files\Mount\Mount implements MoveableMount {
 	public function moveMount($target) {
 		$result = $this->manager->setMountPoint($this->mountPoint, $target);
 		$this->setMountPoint($target);
+
 		return $result;
 	}
 
diff --git a/apps/files_sharing/lib/helper.php b/apps/files_sharing/lib/helper.php
index 0b34335..c15b1d4 100644
--- a/apps/files_sharing/lib/helper.php
+++ b/apps/files_sharing/lib/helper.php
@@ -236,4 +236,5 @@ class Helper {
 		$result = $appConfig->getValue('files_sharing', 'incoming_server2server_share_enabled', 'yes');
 		return ($result === 'yes') ? true : false;
 	}
+
 }
diff --git a/apps/files_sharing/lib/sharedmount.php b/apps/files_sharing/lib/sharedmount.php
index 8d0ecbc..f8def2c 100644
--- a/apps/files_sharing/lib/sharedmount.php
+++ b/apps/files_sharing/lib/sharedmount.php
@@ -8,10 +8,8 @@
 
 namespace OCA\Files_Sharing;
 
-use OC\Files\Filesystem;
 use OC\Files\Mount\Mount;
 use OC\Files\Mount\MoveableMount;
-use OC\Files\Storage\Shared;
 
 /**
  * Shared mount points can be moved by the user
@@ -119,14 +117,6 @@ class SharedMount extends Mount implements MoveableMount {
 	 * @return bool
 	 */
 	public function moveMount($target) {
-		// it shouldn't be possible to move a Shared storage into another one
-		list($targetStorage,) = Filesystem::resolvePath($target);
-		if ($targetStorage instanceof Shared) {
-			\OCP\Util::writeLog('file sharing',
-				'It is not allowed to move one mount point into another one',
-				\OCP\Util::DEBUG);
-			return false;
-		}
 
 		$relTargetPath = $this->stripUserFilesPath($target);
 		$share = $this->storage->getShare();
diff --git a/lib/private/files/view.php b/lib/private/files/view.php
index ff3cb9e..1a9b0e8 100644
--- a/lib/private/files/view.php
+++ b/lib/private/files/view.php
@@ -440,13 +440,17 @@ class View {
 				$internalPath1 = $mount->getInternalPath($absolutePath1 . $postFix1);
 				list(, $internalPath2) = Filesystem::resolvePath($absolutePath2 . $postFix2);
 				if ($internalPath1 === '' and $mount instanceof MoveableMount) {
-					/**
-					 * @var \OC\Files\Mount\Mount | \OC\Files\Mount\MoveableMount $mount
-					 */
-					$sourceMountPoint = $mount->getMountPoint();
-					$result = $mount->moveMount($absolutePath2);
-					$manager->moveMount($sourceMountPoint, $mount->getMountPoint());
-					\OC_FileProxy::runPostProxies('rename', $absolutePath1, $absolutePath2);
+					if ($this->isTargetAllowed($absolutePath2)) {
+						/**
+						 * @var \OC\Files\Mount\Mount | \OC\Files\Mount\MoveableMount $mount
+						 */
+						$sourceMountPoint = $mount->getMountPoint();
+						$result = $mount->moveMount($absolutePath2);
+						$manager->moveMount($sourceMountPoint, $mount->getMountPoint());
+						\OC_FileProxy::runPostProxies('rename', $absolutePath1, $absolutePath2);
+					} else {
+						$result = false;
+					}
 				} elseif ($mp1 == $mp2) {
 					if ($storage1) {
 						$result = $storage1->rename($internalPath1, $internalPath2);
@@ -1185,4 +1189,27 @@ class View {
 			throw new \OCP\Files\InvalidPathException("Path length($pathLen) exceeds max path length($maxLen): $path");
 		}
 	}
+
+	/**
+	 * check if it is allowed to move a mount point to a given target.
+	 * It is not allowed to move a mount point into a different mount point
+	 *
+	 * @param string $target path
+	 * @return boolean
+	 */
+	private function isTargetAllowed($target) {
+
+		$result = false;
+
+		list($targetStorage,) = \OC\Files\Filesystem::resolvePath($target);
+		if ($targetStorage->instanceOfStorage('\OCP\Files\IHomeStorage')) {
+			$result = true;
+		} else {
+			\OCP\Util::writeLog('files',
+				'It is not allowed to move one mount point into another one',
+				\OCP\Util::DEBUG);
+		}
+
+		return $result;
+	}
 }

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud.git



More information about the Pkg-owncloud-commits mailing list