diff --git a/typo3/sysext/backend/Classes/Form/FormDataProvider/AbstractItemProvider.php b/typo3/sysext/backend/Classes/Form/FormDataProvider/AbstractItemProvider.php index f9862e447df10d9d702d79ce9a30b77711791d97..03b19006ef12f991c4c1607bcbb93196f016cde3 100644 --- a/typo3/sysext/backend/Classes/Form/FormDataProvider/AbstractItemProvider.php +++ b/typo3/sysext/backend/Classes/Form/FormDataProvider/AbstractItemProvider.php @@ -390,6 +390,7 @@ abstract class AbstractItemProvider * @param string $fieldName Current handle field name * @param array $items Incoming items * @return array Modified item array + * @throws \RuntimeException */ protected function addItemsFromFolder(array $result, $fieldName, array $items) { @@ -399,8 +400,14 @@ abstract class AbstractItemProvider return $items; } - $fileFolder = $result['processedTca']['columns'][$fieldName]['config']['fileFolder']; - $fileFolder = GeneralUtility::getFileAbsFileName($fileFolder); + $fileFolderRaw = $result['processedTca']['columns'][$fieldName]['config']['fileFolder']; + $fileFolder = GeneralUtility::getFileAbsFileName($fileFolderRaw); + if ($fileFolder === '') { + throw new \RuntimeException( + 'Invalid folder given for item processing: ' . $fileFolderRaw . ' for table ' . $result['tableName'] . ', field ' . $fieldName, + 1479399227 + ); + } $fileFolder = rtrim($fileFolder, '/') . '/'; if (@is_dir($fileFolder)) { diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaSelectItemsTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaSelectItemsTest.php index 668b37a10a08a5e6a2efa90781f50baa070e51f8..a26b9f0d13fa4b3bdcf53224d05d543d24db907e 100644 --- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaSelectItemsTest.php +++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/TcaSelectItemsTest.php @@ -1248,6 +1248,32 @@ class TcaSelectItemsTest extends UnitTestCase $this->assertSame($expectedItems, $result['processedTca']['columns']['aField']['config']['items']); } + /** + * @test + */ + public function addDataThrowsExceptionForInvalidFileFolder() + { + $input = [ + 'tableName' => 'aTable', + 'databaseRow' => [], + 'processedTca' => [ + 'columns' => [ + 'aField' => [ + 'config' => [ + 'type' => 'select', + 'renderType' => 'selectSingle', + 'fileFolder' => 'EXT:non_existing/Resources/Public/', + ], + ], + ], + ], + ]; + + $this->expectException(\RuntimeException::class); + $this->expectExceptionCode(1479399227); + $this->subject->addData($input); + } + /** * @test */