From 4ee6ff9df27cf4c533d4a5f66c2ea439bb663b0c Mon Sep 17 00:00:00 2001
From: Oliver Bartsch <bo@cedev.de>
Date: Fri, 22 Sep 2023 15:13:22 +0200
Subject: [PATCH] [BUGFIX] Properly check instance of folder parameter
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This will prevent type errors in case
given folder parameter is set but not
a Folder object.

Resolves: #102016
Related: #102014
Releases: main, 12.4
Change-Id: I828cab2ab1a5a649ba6fdf08375453b4c3382432
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/81179
Reviewed-by: Stefan Bürk <stefan@buerk.tech>
Tested-by: Oliver Bartsch <bo@cedev.de>
Reviewed-by: Jochen Roth <rothjochen@gmail.com>
Tested-by: Jochen Roth <rothjochen@gmail.com>
Tested-by: Stefan Bürk <stefan@buerk.tech>
Tested-by: core-ci <typo3@b13.com>
Reviewed-by: Oliver Bartsch <bo@cedev.de>
---
 typo3/sysext/core/Classes/LinkHandling/FolderLinkHandler.php | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/typo3/sysext/core/Classes/LinkHandling/FolderLinkHandler.php b/typo3/sysext/core/Classes/LinkHandling/FolderLinkHandler.php
index 232c0c7f6cee..dc7936b59c9b 100644
--- a/typo3/sysext/core/Classes/LinkHandling/FolderLinkHandler.php
+++ b/typo3/sysext/core/Classes/LinkHandling/FolderLinkHandler.php
@@ -19,6 +19,7 @@ namespace TYPO3\CMS\Core\LinkHandling;
 
 use TYPO3\CMS\Core\Resource\Exception\FolderDoesNotExistException;
 use TYPO3\CMS\Core\Resource\Exception\InsufficientFolderAccessPermissionsException;
+use TYPO3\CMS\Core\Resource\Folder;
 use TYPO3\CMS\Core\Resource\ResourceFactory;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 
@@ -46,10 +47,9 @@ class FolderLinkHandler implements LinkHandlingInterface
      */
     public function asString(array $parameters): string
     {
-        if (!isset($parameters['folder'])) {
+        if (!($parameters['folder'] ?? null) instanceof Folder) {
             return '';
         }
-
         // the magic with prepending slash if it is missing will not work on windows
         return $this->baseUrn . '?storage=' . $parameters['folder']->getStorage()->getUid() .
         '&identifier=' . urlencode('/' . ltrim($parameters['folder']->getIdentifier(), '/'));
-- 
GitLab