From 680809042e169ce4c749017a1a4ad3351c1d26e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Molakvo=C3=A6=20=28skjnldsv=29?= Date: Wed, 8 Oct 2025 10:47:41 +0200 Subject: [PATCH] fix(systemtags): catch empty nodes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: John Molakvoæ (skjnldsv) --- apps/dav/lib/SystemTag/SystemTagPlugin.php | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/apps/dav/lib/SystemTag/SystemTagPlugin.php b/apps/dav/lib/SystemTag/SystemTagPlugin.php index 4d4499c7559..0eed4334f29 100644 --- a/apps/dav/lib/SystemTag/SystemTagPlugin.php +++ b/apps/dav/lib/SystemTag/SystemTagPlugin.php @@ -526,14 +526,24 @@ class SystemTagPlugin extends \Sabre\DAV\ServerPlugin { private function canUpdateTagForFileIds(array $fileIds): bool { $user = $this->userSession->getUser(); $userFolder = $this->rootFolder->getUserFolder($user->getUID()); + foreach ($fileIds as $fileId) { - $nodes = $userFolder->getById((int)$fileId); - foreach ($nodes as $node) { - if (($node->getPermissions() & Constants::PERMISSION_UPDATE) === Constants::PERMISSION_UPDATE) { - return true; + try { + $nodes = $userFolder->getById((int)$fileId); + if (empty($nodes)) { + return false; + } + + foreach ($nodes as $node) { + if (($node->getPermissions() & Constants::PERMISSION_UPDATE) !== Constants::PERMISSION_UPDATE) { + return false; + } } + } catch (\Exception $e) { + return false; } } - return false; + + return true; } }