From 4bc48b70f70f2336eff55f262a1df0605b2b9f7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20B=C3=BCrk?= <stefan@buerk.tech> Date: Tue, 7 Feb 2023 19:31:03 +0100 Subject: [PATCH] [BUGFIX] Avoid invalid array key accesses in ext:linkvalidator Ensure that invalid array key accesses are properly guarded. Resolves: #99863 Releases: main, 11.5 Change-Id: I1900eb96f4c77d11accc465aa5847af3e642afcc Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/77778 Tested-by: core-ci <typo3@b13.com> Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de> Reviewed-by: Benni Mack <benni@typo3.org> Tested-by: Benni Mack <benni@typo3.org> --- .../Classes/Linktype/ExternalLinktype.php | 10 +++++----- .../Classes/Report/LinkValidatorReport.php | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/typo3/sysext/linkvalidator/Classes/Linktype/ExternalLinktype.php b/typo3/sysext/linkvalidator/Classes/Linktype/ExternalLinktype.php index 63be2a578d13..dba7457613f1 100644 --- a/typo3/sysext/linkvalidator/Classes/Linktype/ExternalLinktype.php +++ b/typo3/sysext/linkvalidator/Classes/Linktype/ExternalLinktype.php @@ -256,7 +256,7 @@ class ExternalLinktype extends AbstractLinktype public function getErrorMessage($errorParams) { $lang = $this->getLanguageService(); - $errorType = $errorParams['errorType']; + $errorType = $errorParams['errorType'] ?? ''; switch ($errorType) { case self::ERROR_TYPE_HTTP_STATUS_CODE: switch ($errorParams['errno'] ?? 0) { @@ -271,7 +271,7 @@ class ExternalLinktype extends AbstractLinktype break; default: // fall back to other error messages - $message = $lang->getLL('list.report.error.httpstatuscode.' . $errorParams['errno']); + $message = $lang->getLL('list.report.error.httpstatuscode.' . ($errorParams['errno'] ?? 0)); if (!$message) { // fall back to generic error message $message = sprintf($lang->getLL('list.report.externalerror'), $errorType); @@ -299,7 +299,7 @@ class ExternalLinktype extends AbstractLinktype case 'loop': $message = sprintf( $lang->getLL('list.report.redirectloop'), - $errorParams['exception'], + ($errorParams['exception'] ?? ''), '' ); break; @@ -309,11 +309,11 @@ class ExternalLinktype extends AbstractLinktype break; case 'exception': - $message = sprintf($lang->getLL('list.report.httpexception'), $errorParams['exception']); + $message = sprintf($lang->getLL('list.report.httpexception'), ($errorParams['exception'] ?? '')); break; default: - $message = sprintf($lang->getLL('list.report.otherhttpcode'), $errorType, $errorParams['exception']); + $message = sprintf($lang->getLL('list.report.otherhttpcode'), $errorType, ($errorParams['exception'] ?? '')); } return $message; } diff --git a/typo3/sysext/linkvalidator/Classes/Report/LinkValidatorReport.php b/typo3/sysext/linkvalidator/Classes/Report/LinkValidatorReport.php index f66d1b648411..ca909f8f1104 100644 --- a/typo3/sysext/linkvalidator/Classes/Report/LinkValidatorReport.php +++ b/typo3/sysext/linkvalidator/Classes/Report/LinkValidatorReport.php @@ -574,14 +574,14 @@ class LinkValidatorReport $variables['link_title'] = $row['link_title']; $variables['linktarget'] = $hookObj->getBrokenUrl($row); $response = $row['url_response']; - if ($response['valid']) { + if ($response['valid'] ?? false) { $linkMessage = '<span class="text-success">' . htmlspecialchars($languageService->getLL('list.msg.ok')) . '</span>'; } else { $linkMessage = '<span class="text-danger">' . nl2br( // Encode for output htmlspecialchars( - $hookObj->getErrorMessage($response['errorParams']), + $hookObj->getErrorMessage($response['errorParams'] ?? ['errorType' => 'unknown', 'exception' => 'Invalid response']), ENT_QUOTES, 'UTF-8', false -- GitLab