From 95f8d6db49f880951857a19c2a93e2a7f59476cd Mon Sep 17 00:00:00 2001
From: Andreas Fernandez <a.fernandez@scripting-base.de>
Date: Mon, 4 Jul 2022 22:30:48 +0200
Subject: [PATCH] [BUGFIX] Cast folder name in tree provider to string
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The method FileStorageTreeProvider->getSubfoldersRecursively() iterates
an array of subfolders and prepares folder information based on the
iterated data.

This functionality has a minor flaw, thanks to PHP, in case a folder
is named with numbers only, PHP treats array indices as integer if they
can be parsed as such, leading to TypeErrors as the method
prepareFolderInformation() expects a nullable string.

The passed subfolder name is now cast to string to solve this issue.

Resolves: #97851
Releases: main, 11.5
Change-Id: I3357121c4892d6063b6714e4e7b436b3ebdd1802
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/75028
Tested-by: Simon Schaufelberger <simonschaufi+typo3@gmail.com>
Tested-by: core-ci <typo3@b13.com>
Tested-by: Nikita Hovratov <nikita.h@live.de>
Tested-by: Stefan Bürk <stefan@buerk.tech>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Simon Schaufelberger <simonschaufi+typo3@gmail.com>
Reviewed-by: Nikita Hovratov <nikita.h@live.de>
Reviewed-by: Stefan Bürk <stefan@buerk.tech>
Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
---
 typo3/sysext/backend/Classes/Tree/FileStorageTreeProvider.php | 1 +
 1 file changed, 1 insertion(+)

diff --git a/typo3/sysext/backend/Classes/Tree/FileStorageTreeProvider.php b/typo3/sysext/backend/Classes/Tree/FileStorageTreeProvider.php
index 86cc43a099eb..6a7a9dd09860 100644
--- a/typo3/sysext/backend/Classes/Tree/FileStorageTreeProvider.php
+++ b/typo3/sysext/backend/Classes/Tree/FileStorageTreeProvider.php
@@ -201,6 +201,7 @@ class FileStorageTreeProvider
 
         $subFolderCounter = 0;
         foreach ($subFolders as $subFolderName => $subFolder) {
+            $subFolderName = (string)$subFolderName; // Enforce string cast in case $subFolderName contains numeric chars only
             $expanded = $this->isExpanded($subFolder);
             if (!($subFolder instanceof InaccessibleFolder)) {
                 $children = $subFolder->getSubfolders();
-- 
GitLab