From 14c0a18cccf03092924ac01584b4a112a097b04b Mon Sep 17 00:00:00 2001
From: Jonas Schwabe <jonas.schwabe@eyeworkers.de>
Date: Fri, 8 Mar 2019 15:59:04 +0100
Subject: [PATCH] [BUGFIX] Check if language is accessible before uri
 generation

Sites with error handling were not rendering the correct page for
disabled languages because an inaccessible language was used
internally.

Resolves: #87865
Releases: master, 9.5
Change-Id: I8f6219d742c74359e0009085711f5452dc139f40
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/60212
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Jonas Schwabe <jonas.schwabe@eyeworkers.de>
Tested-by: Benni Mack <benni@typo3.org>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Jonas Schwabe <jonas.schwabe@eyeworkers.de>
Reviewed-by: Benni Mack <benni@typo3.org>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
---
 .../Error/PageErrorHandler/PageContentErrorHandler.php     | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/typo3/sysext/core/Classes/Error/PageErrorHandler/PageContentErrorHandler.php b/typo3/sysext/core/Classes/Error/PageErrorHandler/PageContentErrorHandler.php
index 01f0002fac16..24bc35f2310d 100644
--- a/typo3/sysext/core/Classes/Error/PageErrorHandler/PageContentErrorHandler.php
+++ b/typo3/sysext/core/Classes/Error/PageErrorHandler/PageContentErrorHandler.php
@@ -23,6 +23,7 @@ use TYPO3\CMS\Core\Http\HtmlResponse;
 use TYPO3\CMS\Core\LinkHandling\LinkService;
 use TYPO3\CMS\Core\Routing\InvalidRouteArgumentsException;
 use TYPO3\CMS\Core\Site\Entity\Site;
+use TYPO3\CMS\Core\Site\Entity\SiteLanguage;
 use TYPO3\CMS\Core\Site\SiteFinder;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 
@@ -107,10 +108,14 @@ class PageContentErrorHandler implements PageErrorHandlerInterface
         if (!$site instanceof Site) {
             $site = GeneralUtility::makeInstance(SiteFinder::class)->getSiteByPageId((int)$urlParams['pageuid']);
         }
+        $language = $request->getAttribute('language', null);
+        if (!$language instanceof SiteLanguage || !$language->isEnabled()) {
+            $language = $site->getDefaultLanguage();
+        }
         // Build Url
         return (string)$site->getRouter()->generateUri(
             (int)$urlParams['pageuid'],
-            ['_language' => $request->getAttribute('language', null)]
+            ['_language' => $language]
         );
     }
 }
-- 
GitLab