From 8500debe79545dfb6a982de1d492478f9db84370 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Wed, 12 Apr 2017 14:56:51 +0200 Subject: [PATCH] use unjailed path when moving files out of a shared storage Signed-off-by: Robin Appelman --- lib/private/Files/Storage/Local.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/private/Files/Storage/Local.php b/lib/private/Files/Storage/Local.php index 5597c0c64c..4eb9fb13de 100644 --- a/lib/private/Files/Storage/Local.php +++ b/lib/private/Files/Storage/Local.php @@ -35,6 +35,7 @@ namespace OC\Files\Storage; +use OC\Files\Storage\Wrapper\Jail; use OCP\Files\ForbiddenException; /** @@ -371,7 +372,7 @@ class Local extends \OC\Files\Storage\Common { return $fullPath; } - \OCP\Util::writeLog('core', "Following symlinks is not allowed ('$fullPath' -> '$realPath' not inside '{$this->realDataDir}')", \OCP\Util::ERROR); + \OCP\Util::writeLog('core', "Following symlinks is not allowed ('$fullPath' -> '$realPath' not inside '{$this->realDataDir}')", \OCP\Util::ERROR); throw new ForbiddenException('Following symlinks is not allowed', false); } @@ -427,7 +428,13 @@ class Local extends \OC\Files\Storage\Common { * @return bool */ public function moveFromStorage(\OCP\Files\Storage $sourceStorage, $sourceInternalPath, $targetInternalPath) { - if ($sourceStorage->instanceOfStorage('\OC\Files\Storage\Local')) { + if ($sourceStorage->instanceOfStorage(Local::class)) { + if ($sourceStorage->instanceOfStorage(Jail::class)) { + /** + * @var \OC\Files\Storage\Wrapper\Jail $sourceStorage + */ + $sourceInternalPath = $sourceStorage->getUnjailedPath($sourceInternalPath); + } /** * @var \OC\Files\Storage\Local $sourceStorage */