From f4b1c1a070aaea0e17192bb4e5873f04978814d6 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Wed, 16 Jul 2025 15:47:03 +0200 Subject: [PATCH] fix(ShareMapper#findBySharedFolder): Make sure exceptions are caught Signed-off-by: Marcel Klehr --- lib/Db/ShareMapper.php | 5 +++++ lib/Db/TreeMapper.php | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/Db/ShareMapper.php b/lib/Db/ShareMapper.php index 89359b1e..1a6c393f 100644 --- a/lib/Db/ShareMapper.php +++ b/lib/Db/ShareMapper.php @@ -177,6 +177,11 @@ class ShareMapper extends QBMapper { return parent::insertOrUpdate($entity); } + /** + * @throws DoesNotExistException + * @throws MultipleObjectsReturnedException + * @throws Exception + */ public function findBySharedFolder(int $id): Share { $qb = $this->db->getQueryBuilder(); $qb->select(array_map(static function ($c) { diff --git a/lib/Db/TreeMapper.php b/lib/Db/TreeMapper.php index e5093bee..4e3e9055 100644 --- a/lib/Db/TreeMapper.php +++ b/lib/Db/TreeMapper.php @@ -919,7 +919,12 @@ class TreeMapper extends QBMapper { return $array; }, $this->findChildren(TreeMapper::TYPE_FOLDER, $folderId, $isSoftDeleted)); $shares = array_map(function (SharedFolder $sharedFolder) use ($layers, $folderId, $isSoftDeleted) { - $share = $this->shareMapper->findBySharedFolder($sharedFolder->getId()); + try { + $share = $this->shareMapper->findBySharedFolder($sharedFolder->getId()); + } catch (DoesNotExistException|MultipleObjectsReturnedException|Exception $e) { + $this->logger->error('Failed to load a shared folder', ['exception' => $e]); + return null; + } $array = $sharedFolder->toArray(); $array['id'] = $share->getFolderId(); $array['userId'] = $share->getOwner();