From 5e9eb9fc83912e39c668b0a676dddf0f09640132 Mon Sep 17 00:00:00 2001 From: Dan Wallis Date: Wed, 3 Feb 2021 00:01:24 +0000 Subject: [PATCH] Avoid infinite loop when Parse Error occurs --- Magento2/Sniffs/Security/XssTemplateSniff.php | 6 ++++-- Magento2/Tests/Security/XssTemplateUnitTest.inc | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Magento2/Sniffs/Security/XssTemplateSniff.php b/Magento2/Sniffs/Security/XssTemplateSniff.php index aa2accbe..43bdfecc 100644 --- a/Magento2/Sniffs/Security/XssTemplateSniff.php +++ b/Magento2/Sniffs/Security/XssTemplateSniff.php @@ -249,8 +249,10 @@ private function parseLineStatement($start, $end) $posOfLastInlineThen = $this->findLastInScope(T_INLINE_THEN, $start, $end); if ($posOfLastInlineThen !== false) { $posOfInlineElse = $this->file->findNext(T_INLINE_ELSE, $posOfLastInlineThen, $end); - $this->addStatement($posOfLastInlineThen + 1, $posOfInlineElse); - $this->addStatement($posOfInlineElse + 1, $end); + if ($posOfInlineElse !== false) { + $this->addStatement($posOfLastInlineThen + 1, $posOfInlineElse); + $this->addStatement($posOfInlineElse + 1, $end); + } $parsed = true; } else { do { diff --git a/Magento2/Tests/Security/XssTemplateUnitTest.inc b/Magento2/Tests/Security/XssTemplateUnitTest.inc index eefb2c70..6a9f225d 100644 --- a/Magento2/Tests/Security/XssTemplateUnitTest.inc +++ b/Magento2/Tests/Security/XssTemplateUnitTest.inc @@ -57,3 +57,6 @@ echo $var; escapeCss($css); ?> getJsLayout($jsLayout); ?> + + +escapeUrl($block->getUrl('no-route')) getBaseUrl() ?>