]> source.dussan.org Git - nextcloud-server.git/commitdiff
Appropriate length check in Notification.php 35015/head
authornatoponen <57988162+natoponen@users.noreply.github.com>
Tue, 8 Nov 2022 07:45:58 +0000 (10:45 +0300)
committerGitHub <noreply@github.com>
Tue, 8 Nov 2022 07:45:58 +0000 (10:45 +0300)
There is an issue(bug) when using UTF-8 symbols in any method, which checks the length of string as `isset($id[64])`. You can set only 32 UTF-8 symbols because they are 2 byte, and this "array" check seems inapropriate in this case, as it throws unexpected exceptions.

Signed-off-by: natoponen <57988162+natoponen@users.noreply.github.com>
lib/private/Notification/Notification.php

index 3e5cf1d69349a4ddd3a051bfe66e2f28b44d9feb..add4029b6166613dd28dcba8b9eec87afa2e2f97 100644 (file)
@@ -197,12 +197,12 @@ class Notification implements INotification {
         * @since 8.2.0 - 9.0.0: Type of $id changed to string
         */
        public function setObject(string $type, string $id): INotification {
-               if ($type === '' || isset($type[64])) {
+               if ($type === '' || mb_strlen($type) > 64) {
                        throw new \InvalidArgumentException('The given object type is invalid');
                }
                $this->objectType = $type;
 
-               if ($id === '' || isset($id[64])) {
+               if ($id === '' || mb_strlen($id) > 64) {
                        throw new \InvalidArgumentException('The given object id is invalid');
                }
                $this->objectId = $id;