diff --git a/lib/private/Streamer.php b/lib/private/Streamer.php index a25e346859..23029d9891 100644 --- a/lib/private/Streamer.php +++ b/lib/private/Streamer.php @@ -113,12 +113,16 @@ class Streamer { $userFolder = \OC::$server->getRootFolder()->get(Filesystem::getRoot()); /** @var Folder $dirNode */ - $dirNode = $userFolder->get($rootDir); + $dirNode = $userFolder->get($dir); $files = $dirNode->getDirectoryListing(); foreach($files as $file) { if($file instanceof File) { - $fh = $file->fopen('r'); + try { + $fh = $file->fopen('r'); + } catch (NotPermittedException $e) { + continue; + } $this->addFileFromStream( $fh, $internalDir . $file->getName(), @@ -127,7 +131,9 @@ class Streamer { ); fclose($fh); } elseif ($file instanceof Folder) { - $this->addDirRecursive($file->getName(), $internalDir); + if($file->isReadable()) { + $this->addDirRecursive($dir . '/' . $file->getName(), $internalDir); + } } } } diff --git a/lib/private/legacy/files.php b/lib/private/legacy/files.php index 28396a9d07..ed26a125a6 100644 --- a/lib/private/legacy/files.php +++ b/lib/private/legacy/files.php @@ -180,7 +180,11 @@ class OC_Files { $userFolder = \OC::$server->getRootFolder()->get(\OC\Files\Filesystem::getRoot()); $file = $userFolder->get($file); if($file instanceof \OC\Files\Node\File) { - $fh = $file->fopen('r'); + try { + $fh = $file->fopen('r'); + } catch (\OCP\Files\NotPermittedException $e) { + continue; + } $fileSize = $file->getSize(); $fileTime = $file->getMTime(); } else { @@ -309,7 +313,7 @@ class OC_Files { OC_Util::obEnd(); $view->lockFile($filename, ILockingProvider::LOCK_SHARED); - + $rangeArray = array(); if (isset($params['range']) && substr($params['range'], 0, 6) === 'bytes=') {