From 60b87b18b7ef15b49c121ad9bb70ff73e5339585 Mon Sep 17 00:00:00 2001
From: Oliver Bartsch <bo@cedev.de>
Date: Thu, 26 Jan 2023 16:17:53 +0100
Subject: [PATCH] [BUGFIX] Prevent possible null pointer exception in data
 processors

The method `getContentObject()` might return null.
This is now properly handled in the MenuProcessor
and LanguageMenuProcessor.

Resolves: #99722
Releases: main, 11.5
Change-Id: Iebaa2324c59032bd10610c2a63156168777070db
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/77614
Tested-by: Oliver Bartsch <bo@cedev.de>
Tested-by: core-ci <typo3@b13.com>
Reviewed-by: Nikita Hovratov <nikita.h@live.de>
Tested-by: Nikita Hovratov <nikita.h@live.de>
Reviewed-by: Oliver Bartsch <bo@cedev.de>
---
 .../Classes/DataProcessing/LanguageMenuProcessor.php        | 6 +++---
 .../frontend/Classes/DataProcessing/MenuProcessor.php       | 6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/typo3/sysext/frontend/Classes/DataProcessing/LanguageMenuProcessor.php b/typo3/sysext/frontend/Classes/DataProcessing/LanguageMenuProcessor.php
index 9896ed27b9d3..2249d75172e7 100644
--- a/typo3/sysext/frontend/Classes/DataProcessing/LanguageMenuProcessor.php
+++ b/typo3/sysext/frontend/Classes/DataProcessing/LanguageMenuProcessor.php
@@ -410,9 +410,9 @@ class LanguageMenuProcessor implements DataProcessorInterface
         $this->validateAndBuildConfiguration();
 
         // Process Configuration
-        $menuContentObject = $cObj->getContentObject('HMENU');
-        $renderedMenu = $menuContentObject->render($this->menuConfig);
-        if (!$renderedMenu) {
+        if (($menuContentObject = $cObj->getContentObject('HMENU')) === null
+            || !($renderedMenu = $menuContentObject->render($this->menuConfig))
+        ) {
             return $processedData;
         }
 
diff --git a/typo3/sysext/frontend/Classes/DataProcessing/MenuProcessor.php b/typo3/sysext/frontend/Classes/DataProcessing/MenuProcessor.php
index 07329aee0530..917b8647e110 100644
--- a/typo3/sysext/frontend/Classes/DataProcessing/MenuProcessor.php
+++ b/typo3/sysext/frontend/Classes/DataProcessing/MenuProcessor.php
@@ -455,9 +455,9 @@ class MenuProcessor implements DataProcessorInterface
         $this->buildConfiguration();
 
         // Process Configuration
-        $menuContentObject = $cObj->getContentObject('HMENU');
-        $renderedMenu = $menuContentObject->render($this->menuConfig);
-        if (!$renderedMenu) {
+        if (($menuContentObject = $cObj->getContentObject('HMENU')) === null
+            || !($renderedMenu = $menuContentObject->render($this->menuConfig))
+        ) {
             return $processedData;
         }
 
-- 
GitLab