From f842608c95a1a38ef59d7951380b73c1e4f0c2a3 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Fri, 19 Mar 2021 18:13:59 +0100 Subject: getRelativePath can return null Signed-off-by: Robin Appelman --- lib/private/Files/Node/Folder.php | 2 +- lib/public/Files/Folder.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/private/Files/Node/Folder.php b/lib/private/Files/Node/Folder.php index 36c4cbe58bc..ec73a8c06ae 100644 --- a/lib/private/Files/Node/Folder.php +++ b/lib/private/Files/Node/Folder.php @@ -76,7 +76,7 @@ class Folder extends Node implements \OCP\Files\Folder { /** * @param string $path - * @return string + * @return string|null */ public function getRelativePath($path) { if ($this->path === '' or $this->path === '/') { diff --git a/lib/public/Files/Folder.php b/lib/public/Files/Folder.php index 3e90abdd944..292d53d7767 100644 --- a/lib/public/Files/Folder.php +++ b/lib/public/Files/Folder.php @@ -55,7 +55,7 @@ interface Folder extends Node { * * @param string $path absolute path of an item in the folder * @throws \OCP\Files\NotFoundException - * @return string + * @return string|null * @since 6.0.0 */ public function getRelativePath($path); -- cgit v1.2.3 From e8184eaaada6bfe373877226e4a1ddfab2b2a1c6 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Wed, 24 Mar 2021 14:33:35 +0100 Subject: proper error for search results outside user folder Signed-off-by: Robin Appelman --- lib/private/Search/Result/File.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/private/Search/Result/File.php b/lib/private/Search/Result/File.php index c3b0c4e3751..f8779f8ccbd 100644 --- a/lib/private/Search/Result/File.php +++ b/lib/private/Search/Result/File.php @@ -133,7 +133,11 @@ class File extends \OCP\Search\Result { $userID = $userSession->getUser()->getUID(); self::$userFolderCache = \OC::$server->getUserFolder($userID); } - return self::$userFolderCache->getRelativePath($path); + $relativePath = self::$userFolderCache->getRelativePath($path); + if ($relativePath === null) { + throw new \Exception("Search result not in user folder"); + } + return $relativePath; } /** -- cgit v1.2.3 From 8a92229485095dbd8f379e2b489a3aa48cc37c79 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Wed, 24 Mar 2021 14:56:40 +0100 Subject: getStorage can also return null Signed-off-by: Robin Appelman --- apps/encryption/lib/Crypto/Encryption.php | 2 +- apps/encryption/lib/Util.php | 2 +- lib/private/Files/Filesystem.php | 2 +- lib/private/Files/Mount/MountPoint.php | 4 ++-- lib/private/Files/Node/Folder.php | 2 +- lib/public/Files/Mount/IMountPoint.php | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/encryption/lib/Crypto/Encryption.php b/apps/encryption/lib/Crypto/Encryption.php index 6fa388e8875..51c5122eb93 100644 --- a/apps/encryption/lib/Crypto/Encryption.php +++ b/apps/encryption/lib/Crypto/Encryption.php @@ -435,7 +435,7 @@ class Encryption implements IEncryptionModule { public function shouldEncrypt($path) { if ($this->util->shouldEncryptHomeStorage() === false) { $storage = $this->util->getStorage($path); - if ($storage->instanceOfStorage('\OCP\Files\IHomeStorage')) { + if ($storage && $storage->instanceOfStorage('\OCP\Files\IHomeStorage')) { return false; } } diff --git a/apps/encryption/lib/Util.php b/apps/encryption/lib/Util.php index 2b11b8151c0..139dd3f50fa 100644 --- a/apps/encryption/lib/Util.php +++ b/apps/encryption/lib/Util.php @@ -191,7 +191,7 @@ class Util { * get storage of path * * @param string $path - * @return \OC\Files\Storage\Storage + * @return \OC\Files\Storage\Storage|null */ public function getStorage($path) { return $this->files->getMount($path)->getStorage(); diff --git a/lib/private/Files/Filesystem.php b/lib/private/Files/Filesystem.php index bf94be273f2..fade3b69fbb 100644 --- a/lib/private/Files/Filesystem.php +++ b/lib/private/Files/Filesystem.php @@ -312,7 +312,7 @@ class Filesystem { * get the storage mounted at $mountPoint * * @param string $mountPoint - * @return \OC\Files\Storage\Storage + * @return \OC\Files\Storage\Storage|null */ public static function getStorage($mountPoint) { if (!self::$mounts) { diff --git a/lib/private/Files/Mount/MountPoint.php b/lib/private/Files/Mount/MountPoint.php index cbf3785c409..891bbc41c36 100644 --- a/lib/private/Files/Mount/MountPoint.php +++ b/lib/private/Files/Mount/MountPoint.php @@ -39,7 +39,7 @@ use OCP\ILogger; class MountPoint implements IMountPoint { /** - * @var \OC\Files\Storage\Storage $storage + * @var \OC\Files\Storage\Storage|null $storage */ protected $storage = null; protected $class; @@ -167,7 +167,7 @@ class MountPoint implements IMountPoint { } /** - * @return \OC\Files\Storage\Storage + * @return \OC\Files\Storage\Storage|null */ public function getStorage() { if (is_null($this->storage)) { diff --git a/lib/private/Files/Node/Folder.php b/lib/private/Files/Node/Folder.php index ec73a8c06ae..7b1eff47cd5 100644 --- a/lib/private/Files/Node/Folder.php +++ b/lib/private/Files/Node/Folder.php @@ -494,7 +494,7 @@ class Folder extends Node implements \OCP\Files\Folder { $mounts[] = $this->getMountPoint(); $mounts = array_filter($mounts, function (IMountPoint $mount) { - return $mount->getStorage(); + return $mount->getStorage() !== null; }); $storageIds = array_map(function (IMountPoint $mount) { return $mount->getStorage()->getCache()->getNumericStorageId(); diff --git a/lib/public/Files/Mount/IMountPoint.php b/lib/public/Files/Mount/IMountPoint.php index 7315fd97035..51a5fbade48 100644 --- a/lib/public/Files/Mount/IMountPoint.php +++ b/lib/public/Files/Mount/IMountPoint.php @@ -48,7 +48,7 @@ interface IMountPoint { /** * Get the storage that is mounted * - * @return \OC\Files\Storage\Storage + * @return \OC\Files\Storage\Storage|null * @since 8.0.0 */ public function getStorage(); -- cgit v1.2.3