Enforce a consistent return type
authorAlexander Ebert <ebert@woltlab.com>
Mon, 20 Dec 2021 15:10:27 +0000 (16:10 +0100)
committerAlexander Ebert <ebert@woltlab.com>
Mon, 20 Dec 2021 15:10:27 +0000 (16:10 +0100)
The method was designed to always return an array. If the `\base64_code()` fails, it returned `false` instead, which was both unexpected and could fail in PHP 8.1 (autovivification on false, https://wiki.php.net/rfc/autovivification_false)

wcfsetup/install/files/lib/system/html/node/AbstractHtmlNodeProcessor.class.php

index 9192786554d3b5c795bc73d81e078fbcc424e0c7..93d263ab4c95418f786a89da50d7ea1f48df4148 100644 (file)
@@ -265,21 +265,21 @@ abstract class AbstractHtmlNodeProcessor implements IHtmlNodeProcessor
      */
     public function parseAttributes($attributes)
     {
-        if (empty($attributes)) {
-            return [];
-        }
+        if (!empty($attributes)) {
+            $parsedAttributes = \base64_decode($attributes, true);
+            if ($parsedAttributes !== false) {
+                try {
+                    $parsedAttributes = JSON::decode($parsedAttributes);
+                } catch (SystemException $e) {
+                    /* parse errors can occur if user provided malicious content - ignore them */
+                    $parsedAttributes = [];
+                }
 
-        $parsedAttributes = \base64_decode($attributes, true);
-        if ($parsedAttributes !== false) {
-            try {
-                $parsedAttributes = JSON::decode($parsedAttributes);
-            } catch (SystemException $e) {
-                /* parse errors can occur if user provided malicious content - ignore them */
-                $parsedAttributes = [];
+                return $parsedAttributes;
             }
         }
 
-        return $parsedAttributes;
+        return [];
     }
 
     /**