[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