From 0c275da45665a3806b8476d6e65d62d95c9e7942 Mon Sep 17 00:00:00 2001
From: Andreas Fernandez <a.fernandez@scripting-base.de>
Date: Tue, 15 Aug 2017 14:42:06 +0200
Subject: [PATCH] [BUGFIX] Catch error due to invalid record in Linkvalidator
 scheduler task

Resolves: #82103
Releases: master, 8.7, 7.6
Change-Id: I3e04559c05381c49ab390dc3ad0d3eebddc5a57f
Reviewed-on: https://review.typo3.org/53707
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Joerg Boesche <typo3@joergboesche.de>
Reviewed-by: Markus Klein <markus.klein@typo3.org>
Reviewed-by: Frank Naegler <frank.naegler@typo3.org>
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
Reviewed-by: Georg Ringer <georg.ringer@gmail.com>
Tested-by: Georg Ringer <georg.ringer@gmail.com>
---
 typo3/sysext/linkvalidator/Classes/Task/ValidatorTask.php  | 7 +++++++
 .../linkvalidator/Resources/Private/Language/locallang.xlf | 3 +++
 2 files changed, 10 insertions(+)

diff --git a/typo3/sysext/linkvalidator/Classes/Task/ValidatorTask.php b/typo3/sysext/linkvalidator/Classes/Task/ValidatorTask.php
index 0de4b10bed52..e4f7b5d4c7aa 100644
--- a/typo3/sysext/linkvalidator/Classes/Task/ValidatorTask.php
+++ b/typo3/sysext/linkvalidator/Classes/Task/ValidatorTask.php
@@ -305,6 +305,7 @@ class ValidatorTask extends AbstractTask
      *
      * @param int $page Uid of the page to parse
      * @return string $pageSections Content of page section
+     * @throws \InvalidArgumentException
      */
     protected function checkPageLinks($page)
     {
@@ -321,6 +322,12 @@ class ValidatorTask extends AbstractTask
             $rootLineHidden = false;
         } else {
             $pageRow = BackendUtility::getRecord('pages', $page, '*', '', false);
+            if ($pageRow === null) {
+                throw new \InvalidArgumentException(
+                    sprintf($this->getLanguageService()->sL($this->languageFile . ':tasks.error.invalidPageUid'), $page),
+                    1502800555
+                );
+            }
             $rootLineHidden = $processor->getRootLineIsHidden($pageRow);
         }
         if (!$rootLineHidden || $modTs['checkhidden'] == 1) {
diff --git a/typo3/sysext/linkvalidator/Resources/Private/Language/locallang.xlf b/typo3/sysext/linkvalidator/Resources/Private/Language/locallang.xlf
index 9af0f8c8adb6..9adf68e338ec 100644
--- a/typo3/sysext/linkvalidator/Resources/Private/Language/locallang.xlf
+++ b/typo3/sysext/linkvalidator/Resources/Private/Language/locallang.xlf
@@ -54,6 +54,9 @@
 			<trans-unit id="tasks.error.invalidEmailTemplateFile">
 				<source>The email template file is not existing!</source>
 			</trans-unit>
+			<trans-unit id="tasks.error.invalidPageUid">
+				<source>The given page id %d is invalid!</source>
+			</trans-unit>
 		</body>
 	</file>
 </xliff>
-- 
GitLab