From 46ed78affd1c9bcec287cfe9c15bb6305689e6e7 Mon Sep 17 00:00:00 2001 From: Ferdinand Thiessen Date: Sun, 26 Jan 2025 19:27:46 +0100 Subject: [PATCH] fix: Ensure `label` is always a string Signed-off-by: Ferdinand Thiessen --- apps/files_sharing/lib/Controller/ShareAPIController.php | 5 ++++- apps/sharebymail/lib/ShareByMailProvider.php | 2 +- lib/private/Share20/Share.php | 3 +-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/apps/files_sharing/lib/Controller/ShareAPIController.php b/apps/files_sharing/lib/Controller/ShareAPIController.php index d2412dd78c26f..63a57c2f36bf3 100644 --- a/apps/files_sharing/lib/Controller/ShareAPIController.php +++ b/apps/files_sharing/lib/Controller/ShareAPIController.php @@ -740,7 +740,10 @@ public function createShare( } // If we have a label, use it - if (!empty($label)) { + if ($label !== '') { + if (strlen($label) > 255) { + throw new OCSBadRequestException("Maximum label length is 255"); + } $share->setLabel($label); } diff --git a/apps/sharebymail/lib/ShareByMailProvider.php b/apps/sharebymail/lib/ShareByMailProvider.php index 0f3f5a75dddc0..5e0637c1a3ac0 100644 --- a/apps/sharebymail/lib/ShareByMailProvider.php +++ b/apps/sharebymail/lib/ShareByMailProvider.php @@ -1008,7 +1008,7 @@ protected function createShareObject(array $data): IShare { $share->setPassword($data['password']); $passwordExpirationTime = \DateTime::createFromFormat('Y-m-d H:i:s', $data['password_expiration_time'] ?? ''); $share->setPasswordExpirationTime($passwordExpirationTime !== false ? $passwordExpirationTime : null); - $share->setLabel($data['label']); + $share->setLabel($data['label'] ?? ''); $share->setSendPasswordByTalk((bool)$data['password_by_talk']); $share->setHideDownload((bool)$data['hide_download']); $share->setReminderSent((bool)$data['reminder_sent']); diff --git a/lib/private/Share20/Share.php b/lib/private/Share20/Share.php index c1c13c77fa497..466817efc9a25 100644 --- a/lib/private/Share20/Share.php +++ b/lib/private/Share20/Share.php @@ -66,14 +66,13 @@ class Share implements IShare { private $shareTime; /** @var bool */ private $mailSend; - /** @var string */ - private $label = ''; /** @var ICacheEntry|null */ private $nodeCacheEntry; /** @var bool */ private $hideDownload = false; private bool $reminderSent = false; + private string $label = ''; private bool $noExpirationDate = false; public function __construct(