From 0c3581bb419717b52b23397c740fc8afbcb3e707 Mon Sep 17 00:00:00 2001
From: Thomas Pronold <tp@zotorn.de>
Date: Tue, 21 Apr 2020 09:04:50 +0200
Subject: [PATCH] [BUGFIX] Fix wrongly used typecast in combination with ??
 operator

The 'else' part would never be returned in this cases.

Used [a-zA-Z0-9]{3,}\)[^(]?\$.*\?\? to find the cases.
Care, this brings up false positives as well.

Resolves: #91154
Releases: master, 9.5
Change-Id: Ifdb0f75995543c3cc8abeb81aba52e935e9bf9a1
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/64270
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Tested-by: Susanne Moog <look@susi.dev>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Susanne Moog <look@susi.dev>
---
 typo3/sysext/core/Classes/Mail/TransportFactory.php             | 2 +-
 typo3/sysext/core/Classes/TypoScript/TemplateService.php        | 2 +-
 .../Classes/EventListener/CheckBrokenRteLinkEventListener.php   | 2 +-
 typo3/sysext/redirects/Classes/Repository/Demand.php            | 2 +-
 typo3/sysext/setup/Classes/Controller/SetupModuleController.php | 2 +-
 5 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/typo3/sysext/core/Classes/Mail/TransportFactory.php b/typo3/sysext/core/Classes/Mail/TransportFactory.php
index 165fe1d3376b..a28f09073a23 100644
--- a/typo3/sysext/core/Classes/Mail/TransportFactory.php
+++ b/typo3/sysext/core/Classes/Mail/TransportFactory.php
@@ -69,7 +69,7 @@ class TransportFactory implements SingletonInterface, LoggerAwareInterface
                     $host = $parts[0];
                     $port = $parts[1] ?? null;
                 } else {
-                    $host = (string)$mailSettings['transport_smtp_server'] ?? '';
+                    $host = (string)($mailSettings['transport_smtp_server'] ?? '');
                     $port = null;
                 }
 
diff --git a/typo3/sysext/core/Classes/TypoScript/TemplateService.php b/typo3/sysext/core/Classes/TypoScript/TemplateService.php
index 64b3c587e6e9..94ffbd10733d 100644
--- a/typo3/sysext/core/Classes/TypoScript/TemplateService.php
+++ b/typo3/sysext/core/Classes/TypoScript/TemplateService.php
@@ -1217,7 +1217,7 @@ class TemplateService
             } else {
                 $currentPage = end($this->absoluteRootLine);
                 try {
-                    $site = GeneralUtility::makeInstance(SiteFinder::class)->getSiteByPageId((int)$currentPage['uid'] ?? 0);
+                    $site = GeneralUtility::makeInstance(SiteFinder::class)->getSiteByPageId((int)($currentPage['uid'] ?? 0));
                 } catch (SiteNotFoundException $exception) {
                     $site = null;
                 }
diff --git a/typo3/sysext/linkvalidator/Classes/EventListener/CheckBrokenRteLinkEventListener.php b/typo3/sysext/linkvalidator/Classes/EventListener/CheckBrokenRteLinkEventListener.php
index e6aa587325ca..33e99f35078f 100644
--- a/typo3/sysext/linkvalidator/Classes/EventListener/CheckBrokenRteLinkEventListener.php
+++ b/typo3/sysext/linkvalidator/Classes/EventListener/CheckBrokenRteLinkEventListener.php
@@ -45,7 +45,7 @@ final class CheckBrokenRteLinkEventListener
         if ($event->getLinkType() !== LinkService::TYPE_URL) {
             return;
         }
-        $url = (string)$event->getLinkData()['url'] ?? '';
+        $url = (string)($event->getLinkData()['url'] ?? '');
         if (!empty($url)) {
             if ($this->brokenLinkRepository->isLinkTargetBrokenLink($url)) {
                 $event->markAsBrokenLink('External link is broken');
diff --git a/typo3/sysext/redirects/Classes/Repository/Demand.php b/typo3/sysext/redirects/Classes/Repository/Demand.php
index d92adc89e572..e2ffcb249a6b 100644
--- a/typo3/sysext/redirects/Classes/Repository/Demand.php
+++ b/typo3/sysext/redirects/Classes/Repository/Demand.php
@@ -87,7 +87,7 @@ class Demand
         }
         $sourceHost = $demand['source_host'] ?? '';
         $sourcePath = $demand['source_path'] ?? '';
-        $statusCode = (int)$demand['target_statuscode'] ?? 0;
+        $statusCode = (int)($demand['target_statuscode'] ?? 0);
         $target = $demand['target'] ?? '';
         return new self($page, $sourceHost, $sourcePath, $target, $statusCode);
     }
diff --git a/typo3/sysext/setup/Classes/Controller/SetupModuleController.php b/typo3/sysext/setup/Classes/Controller/SetupModuleController.php
index a07ad4954e23..f3b24617ade2 100644
--- a/typo3/sysext/setup/Classes/Controller/SetupModuleController.php
+++ b/typo3/sysext/setup/Classes/Controller/SetupModuleController.php
@@ -194,7 +194,7 @@ class SetupModuleController
         $beUserId = $backendUser->user['uid'];
         $storeRec = [];
         $fieldList = $this->getFieldsFromShowItem();
-        if (is_array($d) && $this->formProtection->validateToken((string)$postData['formToken'] ?? '', 'BE user setup', 'edit')) {
+        if (is_array($d) && $this->formProtection->validateToken((string)($postData['formToken'] ?? ''), 'BE user setup', 'edit')) {
             // UC hashed before applying changes
             $save_before = md5(serialize($backendUser->uc));
             // PUT SETTINGS into the ->uc array:
-- 
GitLab