typo3/sysext/core/Classes/Resource/Index/MetaDataRepository.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/typo3/sysext/core/Classes/Resource/Index/MetaDataRepository.php b/typo3/sysext/core/Classes/Resource/Index/MetaDataRepository.php index 52afc07..93f63b7 100644 --- a/typo3/sysext/core/Classes/Resource/Index/MetaDataRepository.php +++ b/typo3/sysext/core/Classes/Resource/Index/MetaDataRepository.php @@ -29,6 +29,7 @@ namespace TYPO3\CMS\Core\Resource\Index; ***************************************************************/ use TYPO3\CMS\Core\Resource\File; +use TYPO3\CMS\Core\Resource\ResourceFactory; use TYPO3\CMS\Core\SingletonInterface; /** @@ -118,6 +119,10 @@ class MetaDataRepository implements SingletonInterface { 'cruser_id' => TYPO3_MODE == 'BE' ? $GLOBALS['BE_USER']->user['uid'] : 0 ); $emptyRecord = array_merge($emptyRecord, $additionalFields); + $fileObject = ResourceFactory::getInstance()->getFileObject($fileUid); + if (strpos($fileObject->getMimeType(), 'image') === 0 && (empty($updateRow['width']) || empty($updateRow['height']))) { + throw new \ErrorException('Given metadata did not contain valid width/height data for file: ' . $fileObject->getIdentifier()); + } $this->getDatabaseConnection()->exec_INSERTquery($this->tableName, $emptyRecord); $record = $emptyRecord; $record['uid'] = $this->getDatabaseConnection()->sql_insert_id(); @@ -145,6 +150,10 @@ class MetaDataRepository implements SingletonInterface { } $row = $this->findByFileUid($fileUid); if (count($updateRow) > 0) { + $fileObject = ResourceFactory::getInstance()->getFileObject($fileUid); + if (strpos($fileObject->getMimeType(), 'image') === 0 && (empty($updateRow['width']) || empty($updateRow['height']))) { + throw new \ErrorException('Given metadata did not contain valid width/height data for file: ' . $fileObject->getIdentifier()); + } $updateRow['tstamp'] = time(); $this->getDatabaseConnection()->exec_UPDATEquery($this->tableName, 'uid = ' . (int)$row['uid'], $updateRow);