From b5c54bccb94624e1995d0b2edf002639b6940cb6 Mon Sep 17 00:00:00 2001
From: Oliver Bartsch <bo@cedev.de>
Date: Mon, 11 Dec 2023 11:15:09 +0100
Subject: [PATCH] [BUGFIX] Prevent TypeError in FileSearchDemand

Since `QueryHelper::parseOrderBy()` might return
NULL as value for fieldname and direction, we
now check those values properly to prevent any
TypeErrors using the type-hinted `addOrdering()`
method.

Resolves: #102649
Releases: main, 12.4
Change-Id: Ie117e7fd0593392e843aaca5c1e9c254c4de42d1
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/82129
Reviewed-by: Oliver Bartsch <bo@cedev.de>
Tested-by: Oliver Bartsch <bo@cedev.de>
Tested-by: core-ci <typo3@b13.com>
---
 .../sysext/core/Classes/Resource/Search/FileSearchQuery.php  | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/typo3/sysext/core/Classes/Resource/Search/FileSearchQuery.php b/typo3/sysext/core/Classes/Resource/Search/FileSearchQuery.php
index 8fa32bcae7dd..3cc31173d635 100644
--- a/typo3/sysext/core/Classes/Resource/Search/FileSearchQuery.php
+++ b/typo3/sysext/core/Classes/Resource/Search/FileSearchQuery.php
@@ -94,7 +94,10 @@ class FileSearchQuery
         if ($searchDemand->getOrderings() === null) {
             $orderBy = ($GLOBALS['TCA'][self::FILES_TABLE]['ctrl']['sortby'] ?? '') ?: ($GLOBALS['TCA'][self::FILES_TABLE]['ctrl']['default_sortby'] ?? '');
             foreach (QueryHelper::parseOrderBy((string)$orderBy) as [$fieldName, $order]) {
-                $searchDemand = $searchDemand->addOrdering(self::FILES_TABLE, $fieldName, $order);
+                if (is_string($fieldName) && $fieldName !== '') {
+                    // Call add ordering only for valid field names
+                    $searchDemand = $searchDemand->addOrdering(self::FILES_TABLE, $fieldName, $order ?? 'ASC');
+                }
             }
         }
         foreach ($searchDemand->getOrderings() as [$tableName, $fieldName, $direction]) {
-- 
GitLab