Fix invalid object types are handled with additionalData
authorJoshua Rüsweg <josh@bastelstu.be>
Fri, 22 Jun 2018 14:12:16 +0000 (16:12 +0200)
committerJoshua Rüsweg <josh@bastelstu.be>
Fri, 22 Jun 2018 14:12:16 +0000 (16:12 +0200)
These objects can contain an additionalData value which is NULL. This leads to an error with the strict data types, since unserialize expects a string.
See #2534

wcfsetup/install/files/lib/data/box/Box.class.php
wcfsetup/install/files/lib/data/user/notification/UserNotification.class.php

index 87fda493e80d42628cb8837bf94e40c1f0def21f..35732b44c4349696579144d1d9c1359575dde3c5 100644 (file)
@@ -144,7 +144,7 @@ class Box extends DatabaseObject {
                
                // handle condition data
                if ($data['additionalData'] !== null) {
-                       $this->data['additionalData'] = @unserialize($data['additionalData']);
+                       $this->data['additionalData'] = @unserialize($data['additionalData'] ?: '');
                }
                if (!is_array($this->data['additionalData'])) {
                        $this->data['additionalData'] = [];
index ddcabf732faedbd1b03cf36c0b426b17b17c80ad..34247b45c8a05b1dde459723514562103e75c420 100644 (file)
@@ -48,7 +48,7 @@ class UserNotification extends DatabaseObject {
        protected function handleData($data) {
                parent::handleData($data);
                
-               $this->data['additionalData'] = @unserialize($this->data['additionalData']);
+               $this->data['additionalData'] = @unserialize($this->data['additionalData'] ?: '');
                if (!is_array($this->data['additionalData'])) {
                        $this->data['additionalData'] = [];
                }