From 77e3d067f03ba334fc1b06f8d2177006ef859822 Mon Sep 17 00:00:00 2001 From: Robin McCorkell <rmccorkell@karoshi.org.uk> Date: Mon, 21 Apr 2014 11:35:52 +0100 Subject: [PATCH] Better handle return values from Filesystem::getMountBy* getMountByStorageId and getMountByNumericId return an empty array on error, which should be detected to avoid possible errors. This commit also adds in some new logging points and throws to aid debugging --- apps/files_sharing/lib/cache.php | 2 +- apps/files_sharing/lib/sharedstorage.php | 3 ++- lib/private/share/share.php | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/files_sharing/lib/cache.php b/apps/files_sharing/lib/cache.php index 67a0410ef7..a30bb865e5 100644 --- a/apps/files_sharing/lib/cache.php +++ b/apps/files_sharing/lib/cache.php @@ -54,7 +54,7 @@ class Shared_Cache extends Cache { if (isset($source['path']) && isset($source['fileOwner'])) { \OC\Files\Filesystem::initMountPoints($source['fileOwner']); $mounts = \OC\Files\Filesystem::getMountByNumericId($source['storage']); - if (is_array($mounts) and count($mounts)) { + if (is_array($mounts) and !empty($mounts)) { $fullPath = $mounts[0]->getMountPoint() . $source['path']; list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($fullPath); if ($storage) { diff --git a/apps/files_sharing/lib/sharedstorage.php b/apps/files_sharing/lib/sharedstorage.php index 5e478d5ead..2252ec6a1a 100644 --- a/apps/files_sharing/lib/sharedstorage.php +++ b/apps/files_sharing/lib/sharedstorage.php @@ -87,10 +87,11 @@ class Shared extends \OC\Files\Storage\Common { if (!isset($source['fullPath'])) { \OC\Files\Filesystem::initMountPoints($source['fileOwner']); $mount = \OC\Files\Filesystem::getMountByNumericId($source['storage']); - if (is_array($mount)) { + if (is_array($mount) && !empty($mount)) { $this->files[$target]['fullPath'] = $mount[key($mount)]->getMountPoint() . $source['path']; } else { $this->files[$target]['fullPath'] = false; + \OCP\Util::writeLog('files_sharing', "Unable to get mount for shared storage '" . $source['storage'] . "' user '" . $source['fileOwner'] . "'", \OCP\Util::ERROR); } } return $this->files[$target]['fullPath']; diff --git a/lib/private/share/share.php b/lib/private/share/share.php index c0ce3a1d8a..b12d62e843 100644 --- a/lib/private/share/share.php +++ b/lib/private/share/share.php @@ -1228,7 +1228,7 @@ class Share extends \OC\Share\Constants { } else { if (!isset($mounts[$row['storage']])) { $mountPoints = \OC\Files\Filesystem::getMountByNumericId($row['storage']); - if (is_array($mountPoints)) { + if (is_array($mountPoints) && !empty($mountPoints)) { $mounts[$row['storage']] = current($mountPoints); } } -- GitLab