From d00b800261851c1a1df0d95533982c414659f67c Mon Sep 17 00:00:00 2001
From: Thomas Hohn <thomas@hohn.dk>
Date: Tue, 24 Jan 2023 18:35:28 +0100
Subject: [PATCH] [BUGFIX] Fix PHP 8 warning in ContentObjectRenderer
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Since $conf['externalBlocks.'][$tagName . '.'] can be null, added a null
coalescing check to ensure that $cfg contains a valid value.

Resolves: #99706
Releases: main, 11.5
Change-Id: Ia80bc50504e27eb0155232e1f1eb956f9b88ac79
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/77576
Reviewed-by: Stefan Bürk <stefan@buerk.tech>
Tested-by: core-ci <typo3@b13.com>
Tested-by: Stefan Bürk <stefan@buerk.tech>
---
 .../Classes/ContentObject/ContentObjectRenderer.php    | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php b/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php
index 82eb0261a50b..16fb86fdd44b 100644
--- a/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php
+++ b/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php
@@ -3448,7 +3448,10 @@ class ContentObjectRenderer implements LoggerAwareInterface
             if ($k % 2) {
                 // font:
                 $tagName = strtolower($htmlParser->getFirstTagName($v));
-                $cfg = $conf['externalBlocks.'][$tagName . '.'];
+                $cfg = $conf['externalBlocks.'][$tagName . '.'] ?? [];
+                if ($cfg === []) {
+                    continue;
+                }
                 if (($cfg['stripNLprev'] ?? false) || ($cfg['stripNL'] ?? false)) {
                     $parts[$k - 1] = preg_replace('/' . CR . '?' . LF . '[ ]*$/', '', $parts[$k - 1]);
                 }
@@ -3464,7 +3467,10 @@ class ContentObjectRenderer implements LoggerAwareInterface
             if ($k % 2) {
                 $tag = $htmlParser->getFirstTag($v);
                 $tagName = strtolower($htmlParser->getFirstTagName($v));
-                $cfg = $conf['externalBlocks.'][$tagName . '.'];
+                $cfg = $conf['externalBlocks.'][$tagName . '.'] ?? [];
+                if ($cfg === []) {
+                    continue;
+                }
                 if ($cfg['callRecursive'] ?? false) {
                     $parts[$k] = $this->parseFunc($htmlParser->removeFirstAndLastTag($v), $conf);
                     if (!($cfg['callRecursive.']['dontWrapSelf'] ?? false)) {
-- 
GitLab