diff --git a/typo3/sysext/core/Classes/Security/ContentSecurityPolicy/Reporting/ResolutionRepository.php b/typo3/sysext/core/Classes/Security/ContentSecurityPolicy/Reporting/ResolutionRepository.php index c123d653ab5dd8eb3b4b0b4df73a1ab4e16713c5..1c6e61759b5f6a27fad42f283f87b1629eea2788 100644 --- a/typo3/sysext/core/Classes/Security/ContentSecurityPolicy/Reporting/ResolutionRepository.php +++ b/typo3/sysext/core/Classes/Security/ContentSecurityPolicy/Reporting/ResolutionRepository.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Security\ContentSecurityPolicy\Reporting; +use Doctrine\DBAL\Exception\TableNotFoundException; use TYPO3\CMS\Core\Database\Connection; use TYPO3\CMS\Core\Database\ConnectionPool; use TYPO3\CMS\Core\Security\ContentSecurityPolicy\Scope; @@ -55,13 +56,21 @@ class ResolutionRepository */ public function findByScope(Scope $scope): array { - $result = $this->getConnection()->select( - ['*'], - self::TABLE_NAME, - ['scope' => (string)$scope], - [], - ['created' => 'asc'] - ); + try { + $result = $this->getConnection()->select( + ['*'], + self::TABLE_NAME, + ['scope' => (string)$scope], + [], + ['created' => 'asc'] + ); + } catch (TableNotFoundException) { + // We usually don't take care of non-existing table throughout the system. + // This one however can happen when major upgrading TYPO3 and calling the + // backend first time. It is fair to catch this case to prevent forcing admins + // to unlock standalone install tool or to use cli to fix db schema. + return []; + } return array_map( static fn (array $row) => Resolution::fromArray($row), $result->fetchAllAssociative()