[TASK] Add/drop usage of preg_quote() where needed 43/10943/7
authorStefan Neufeind <typo3.neufeind@speedpartner.de>
Wed, 2 May 2012 23:20:14 +0000 (01:20 +0200)
committerJigal van Hemert <jigal@xs4all.nl>
Sat, 13 Apr 2013 15:08:33 +0000 (17:08 +0200)
In some places preg_quote() is not used or is used incorrectly.
In other places there are preg_quote() calls which had no
real function.

Change-Id: If201394036d17a68cea41903f849c6c5ea11b069
Releases: 4.5, 4.6, 4.7, 6.0, 6.1
Resolves: #36793
Reviewed-on: https://review.typo3.org/10943
Reviewed-by: Dmitry Dulepov
Reviewed-by: Markus Klein
Tested-by: Markus Klein
Tested-by: Philipp Gampe
Reviewed-by: Philipp Gampe
Reviewed-by: Jigal van Hemert
Tested-by: Jigal van Hemert
typo3/sysext/backend/Classes/Module/ModuleSettings.php
typo3/sysext/backend/Classes/Tree/Pagetree/DataProvider.php
typo3/sysext/backend/Classes/Utility/IconUtility.php
typo3/sysext/core/Classes/Database/PreparedStatement.php
typo3/sysext/core/Classes/Html/HtmlParser.php
typo3/sysext/core/Classes/Html/RteHtmlParser.php
typo3/sysext/core/Classes/Mail/SwiftMailerAdapter.php
typo3/sysext/core/Classes/Utility/ExtensionManagementUtility.php

index 6ccce54..bd825c4 100644 (file)
@@ -201,6 +201,7 @@ class ModuleSettings {
         */
        public function addToStoreListFromPrefix($prefix = '') {
                $prefix = $prefix ? $prefix : $this->prefix;
+               $prefix = preg_quote($prefix, '/');
                foreach ($GLOBALS['SOBE']->MOD_SETTINGS as $key => $value) {
                        if (preg_match('/^' . $prefix . '/', $key)) {
                                $this->storeList[$key] = $key;
@@ -463,4 +464,4 @@ class ModuleSettings {
 }
 
 
-?>
\ No newline at end of file
+?>
index 17e42ac..0815946 100644 (file)
@@ -215,6 +215,7 @@ class DataProvider extends \TYPO3\CMS\Backend\Tree\AbstractTreeDataProvider {
                        $mountPoints = array($mountPoints);
                }
                $isNumericSearchFilter = is_numeric($searchFilter) && $searchFilter > 0;
+               $searchFilterQuoted = preg_quote($searchFilter, '/');
                $nodeId = intval($node->getId());
                foreach ($records as $record) {
                        $record = \TYPO3\CMS\Backend\Tree\Pagetree\Commands::getNodeRecord($record['uid']);
@@ -267,7 +268,7 @@ class DataProvider extends \TYPO3\CMS\Backend\Tree\AbstractTreeDataProvider {
                                        if ($isNumericSearchFilter && intval($rootlineElement['uid']) === intval($searchFilter)) {
                                                $text = str_replace('$1', $refNode->getText(), $replacement);
                                        } else {
-                                               $text = preg_replace('/(' . $searchFilter . ')/i', $replacement, $refNode->getText());
+                                               $text = preg_replace('/(' . $searchFilterQuoted . ')/i', $replacement, $refNode->getText());
                                        }
                                        $refNode->setText($text, $refNode->getTextSourceField(), $refNode->getPrefix(), $refNode->getSuffix());
                                        /** @var $childCollection \TYPO3\CMS\Backend\Tree\Pagetree\PagetreeNodeCollection */
@@ -442,4 +443,4 @@ class DataProvider extends \TYPO3\CMS\Backend\Tree\AbstractTreeDataProvider {
 }
 
 
-?>
\ No newline at end of file
+?>
index f5b27b8..6dfbb96 100644 (file)
@@ -340,7 +340,7 @@ class IconUtility {
                if (preg_match('/(.*)_i(\\....)$/', $srcBasename, $matches)) {
                        $temp_path = dirname(PATH_thisScript) . '/';
                        if (!@is_file(($temp_path . $backPath . $src))) {
-                               $srcOrg = preg_replace('/_i' . preg_quote($matches[2]) . '$/', $matches[2], $src);
+                               $srcOrg = preg_replace('/_i' . preg_quote($matches[2], '/') . '$/', $matches[2], $src);
                                $src = self::makeIcon($backPath . $srcOrg, 'disabled', 0, FALSE, $temp_path . $backPath . $srcOrg, $srcBasename);
                        }
                }
index 3263fb1..ad00274 100644 (file)
@@ -496,7 +496,7 @@ class PreparedStatement {
                                }
                                // Replace the marker (not preceeded by a word character or a ':' but
                                // followed by a word boundary)
-                               $query = preg_replace('/(?<![\\w:])' . $key . '\\b/', $this->parameterWrapToken . $key . $this->parameterWrapToken, $query);
+                               $query = preg_replace('/(?<![\\w:])' . preg_quote($key, '/') . '\\b/', $this->parameterWrapToken . $key . $this->parameterWrapToken, $query);
                        } else {
                                $unnamedParameterCount++;
                        }
@@ -518,4 +518,4 @@ class PreparedStatement {
 }
 
 
-?>
\ No newline at end of file
+?>
index e60e949..af50942 100644 (file)
@@ -220,7 +220,7 @@ class HtmlParser {
                                if (empty($wrap)) {
                                        $wrapArr = array('###', '###');
                                }
-                               $content = preg_replace('/' . preg_quote($wrapArr[0]) . '([A-Z0-9_|\\-]*)' . preg_quote($wrapArr[1]) . '/is', '', $content);
+                               $content = preg_replace('/' . preg_quote($wrapArr[0], '/') . '([A-Z0-9_|\\-]*)' . preg_quote($wrapArr[1], '/') . '/is', '', $content);
                        }
                }
                return $content;
@@ -322,6 +322,9 @@ class HtmlParser {
         */
        public function splitIntoBlock($tag, $content, $eliminateExtraEndTags = FALSE) {
                $tags = array_unique(\TYPO3\CMS\Core\Utility\GeneralUtility::trimExplode(',', $tag, 1));
+               foreach ($tags as &$tag) {
+                       $tag = preg_quote($tag, '/');
+               }
                $regexStr = '/\\<\\/?(' . implode('|', $tags) . ')(\\s*\\>|\\s[^\\>]*\\>)/si';
                $parts = preg_split($regexStr, $content);
                $newParts = array();
@@ -425,6 +428,9 @@ class HtmlParser {
         */
        public function splitTags($tag, $content) {
                $tags = \TYPO3\CMS\Core\Utility\GeneralUtility::trimExplode(',', $tag, 1);
+               foreach ($tags as &$tag) {
+                       $tag = preg_quote($tag, '/');
+               }
                $regexStr = '/\\<(' . implode('|', $tags) . ')(\\s[^>]*)?\\/?>/si';
                $parts = preg_split($regexStr, $content);
                $pointer = strlen($parts[0]);
@@ -627,8 +633,8 @@ class HtmlParser {
                // Block tags, must have endings...
                $blockTags = explode(',', $blockTags);
                foreach ($blockTags as $tagName) {
-                       $countBegin = count(preg_split(('/\\<' . $tagName . '(\\s|\\>)/s'), $content)) - 1;
-                       $countEnd = count(preg_split(('/\\<\\/' . $tagName . '(\\s|\\>)/s'), $content)) - 1;
+                       $countBegin = count(preg_split(('/\\<' . preg_quote($tagName, '/') . '(\\s|\\>)/s'), $content)) - 1;
+                       $countEnd = count(preg_split(('/\\<\\/' . preg_quote($tagName, '/') . '(\\s|\\>)/s'), $content)) - 1;
                        $analyzedOutput['blocks'][$tagName] = array($countBegin, $countEnd, $countBegin - $countEnd);
                        if ($countBegin) {
                                $analyzedOutput['counts'][$tagName] = $countBegin;
@@ -644,8 +650,8 @@ class HtmlParser {
                // Solo tags, must NOT have endings...
                $soloTags = explode(',', $soloTags);
                foreach ($soloTags as $tagName) {
-                       $countBegin = count(preg_split(('/\\<' . $tagName . '(\\s|\\>)/s'), $content)) - 1;
-                       $countEnd = count(preg_split(('/\\<\\/' . $tagName . '(\\s|\\>)/s'), $content)) - 1;
+                       $countBegin = count(preg_split(('/\\<' . preg_quote($tagName, '/') . '(\\s|\\>)/s'), $content)) - 1;
+                       $countEnd = count(preg_split(('/\\<\\/' . preg_quote($tagName, '/') . '(\\s|\\>)/s'), $content)) - 1;
                        $analyzedOutput['solo'][$tagName] = array($countBegin, $countEnd);
                        if ($countBegin) {
                                $analyzedOutput['counts'][$tagName] = $countBegin;
@@ -1152,7 +1158,7 @@ class HtmlParser {
         */
        public function mapTags($value, $tags = array(), $ltChar = '<', $ltChar2 = '<') {
                foreach ($tags as $from => $to) {
-                       $value = preg_replace('/' . preg_quote($ltChar) . '(\\/)?' . $from . '\\s([^\\>])*(\\/)?\\>/', $ltChar2 . '$1' . $to . ' $2$3>', $value);
+                       $value = preg_replace('/' . preg_quote($ltChar, '/') . '(\\/)?' . $from . '\\s([^\\>])*(\\/)?\\>/', $ltChar2 . '$1' . $to . ' $2$3>', $value);
                }
                return $value;
        }
@@ -1543,4 +1549,4 @@ class HtmlParser {
 }
 
 
-?>
\ No newline at end of file
+?>
index 083adf2..d2b11b4 100644 (file)
@@ -954,7 +954,7 @@ class RteHtmlParser extends \TYPO3\CMS\Core\Html\HtmlParser {
                                                if (!isset($this->procOptions['typolist']) || $this->procOptions['typolist']) {
                                                        $parts = $this->getAllParts($this->splitIntoBlock('LI', $this->removeFirstAndLastTag($blockSplit[$k])), 1, 0);
                                                        foreach ($parts as $k2 => $value) {
-                                                               $parts[$k2] = preg_replace('/[' . preg_quote((LF . CR)) . ']+/', '', $parts[$k2]);
+                                                               $parts[$k2] = preg_replace('/[' . LF . CR . ']+/', '', $parts[$k2]);
                                                                // remove all linesbreaks!
                                                                $parts[$k2] = $this->defaultTStagMapping($parts[$k2], 'db');
                                                                $parts[$k2] = $this->cleanFontTags($parts[$k2], 0, 0, 0);
@@ -968,7 +968,7 @@ class RteHtmlParser extends \TYPO3\CMS\Core\Html\HtmlParser {
                                                        $blockSplit[$k] = '<typolist' . $params . '>' . LF . implode(LF, $parts) . LF . '</typolist>' . $lastBR;
                                                }
                                        } else {
-                                               $blockSplit[$k] = preg_replace(('/[' . preg_quote((LF . CR)) . ']+/'), ' ', $this->transformStyledATags($blockSplit[$k])) . $lastBR;
+                                               $blockSplit[$k] = preg_replace(('/[' . LF . CR . ']+/'), ' ', $this->transformStyledATags($blockSplit[$k])) . $lastBR;
                                        }
                                        break;
                                case 'table':
@@ -976,7 +976,7 @@ class RteHtmlParser extends \TYPO3\CMS\Core\Html\HtmlParser {
                                        if (!$this->procOptions['preserveTables'] && !$css) {
                                                $blockSplit[$k] = $this->TS_transform_db($this->removeTables($blockSplit[$k]));
                                        } else {
-                                               $blockSplit[$k] = preg_replace(('/[' . preg_quote((LF . CR)) . ']+/'), ' ', $this->transformStyledATags($blockSplit[$k])) . $lastBR;
+                                               $blockSplit[$k] = preg_replace(('/[' . LF . CR . ']+/'), ' ', $this->transformStyledATags($blockSplit[$k])) . $lastBR;
                                        }
                                        break;
                                case 'h1':
@@ -1002,12 +1002,12 @@ class RteHtmlParser extends \TYPO3\CMS\Core\Html\HtmlParser {
                                                }
                                        } else {
                                                // Eliminate true linebreaks inside Hx tags
-                                               $blockSplit[$k] = preg_replace(('/[' . preg_quote((LF . CR)) . ']+/'), ' ', $this->transformStyledATags($blockSplit[$k])) . $lastBR;
+                                               $blockSplit[$k] = preg_replace(('/[' . LF . CR . ']+/'), ' ', $this->transformStyledATags($blockSplit[$k])) . $lastBR;
                                        }
                                        break;
                                default:
                                        // Eliminate true linebreaks inside other headlist tags
-                                       $blockSplit[$k] = preg_replace(('/[' . preg_quote((LF . CR)) . ']+/'), ' ', $this->transformStyledATags($blockSplit[$k])) . $lastBR;
+                                       $blockSplit[$k] = preg_replace(('/[' . LF . CR . ']+/'), ' ', $this->transformStyledATags($blockSplit[$k])) . $lastBR;
                                        break;
                                }
                        } else {
@@ -1015,11 +1015,11 @@ class RteHtmlParser extends \TYPO3\CMS\Core\Html\HtmlParser {
                                if (strcmp(trim($blockSplit[$k]), '')) {
                                        $blockSplit[$k] = preg_replace('/<hr\\/>/', '<hr />', $blockSplit[$k]);
                                        // Remove linebreaks preceding hr tags
-                                       $blockSplit[$k] = preg_replace('/[' . preg_quote((LF . CR)) . ']+<(hr)(\\s[^>\\/]*)?[[:space:]]*\\/?>/', '<$1$2/>', $blockSplit[$k]);
+                                       $blockSplit[$k] = preg_replace('/[' . LF . CR . ']+<(hr)(\\s[^>\\/]*)?[[:space:]]*\\/?>/', '<$1$2/>', $blockSplit[$k]);
                                        // Remove linebreaks following hr tags
-                                       $blockSplit[$k] = preg_replace('/<(hr)(\\s[^>\\/]*)?[[:space:]]*\\/?>[' . preg_quote((LF . CR)) . ']+/', '<$1$2/>', $blockSplit[$k]);
+                                       $blockSplit[$k] = preg_replace('/<(hr)(\\s[^>\\/]*)?[[:space:]]*\\/?>[' . LF . CR . ']+/', '<$1$2/>', $blockSplit[$k]);
                                        // Replace other linebreaks with space
-                                       $blockSplit[$k] = preg_replace('/[' . preg_quote((LF . CR)) . ']+/', ' ', $blockSplit[$k]);
+                                       $blockSplit[$k] = preg_replace('/[' . LF . CR . ']+/', ' ', $blockSplit[$k]);
                                        $blockSplit[$k] = $this->divideIntoLines($blockSplit[$k]) . $lastBR;
                                        $blockSplit[$k] = $this->transformStyledATags($blockSplit[$k]);
                                } else {
@@ -1357,8 +1357,8 @@ class RteHtmlParser extends \TYPO3\CMS\Core\Html\HtmlParser {
                if (count($divSplit) <= 1 || $count <= 0) {
                        // Wrap hr tags with LF's
                        $newValue = preg_replace('/<(hr)(\\s[^>\\/]*)?[[:space:]]*\\/?>/i', LF . '<$1$2/>' . LF, $value);
-                       $newValue = preg_replace('/' . preg_quote((LF . LF)) . '/i', LF, $newValue);
-                       $newValue = preg_replace('/(^' . preg_quote(LF) . ')|(' . preg_quote(LF) . '$)/i', '', $newValue);
+                       $newValue = preg_replace('/' . LF . LF . '/i', LF, $newValue);
+                       $newValue = preg_replace('/(^' . LF . ')|(' . LF . '$)/i', '', $newValue);
                        return $newValue;
                }
                // Traverse the splitted sections:
@@ -1446,8 +1446,8 @@ class RteHtmlParser extends \TYPO3\CMS\Core\Html\HtmlParser {
                                $divSplit[$k] = trim(strip_tags($divSplit[$k], '<' . implode('><', $allowTagsOutside) . '>'));
                                // Wrap hr tags with LF's
                                $divSplit[$k] = preg_replace('/<(hr)(\\s[^>\\/]*)?[[:space:]]*\\/?>/i', LF . '<$1$2/>' . LF, $divSplit[$k]);
-                               $divSplit[$k] = preg_replace('/' . preg_quote((LF . LF)) . '/i', LF, $divSplit[$k]);
-                               $divSplit[$k] = preg_replace('/(^' . preg_quote(LF) . ')|(' . preg_quote(LF) . '$)/i', '', $divSplit[$k]);
+                               $divSplit[$k] = preg_replace('/' . LF . LF . '/i', LF, $divSplit[$k]);
+                               $divSplit[$k] = preg_replace('/(^' . LF . ')|(' . LF . '$)/i', '', $divSplit[$k]);
                                if (!strcmp($divSplit[$k], '')) {
                                        unset($divSplit[$k]);
                                }
@@ -1760,4 +1760,4 @@ class RteHtmlParser extends \TYPO3\CMS\Core\Html\HtmlParser {
 }
 
 
-?>
\ No newline at end of file
+?>
index 88619fe..90224df 100644 (file)
@@ -220,7 +220,7 @@ class SwiftMailerAdapter implements \TYPO3\CMS\Core\Mail\MailerAdapterInterface
        protected function setBody($body) {
                if ($this->boundary) {
                        // handle multi-part
-                       $bodyParts = preg_split('/--' . preg_quote($this->boundary) . '(--)?/m', $body, NULL, PREG_SPLIT_NO_EMPTY);
+                       $bodyParts = preg_split('/--' . preg_quote($this->boundary, '/') . '(--)?/m', $body, NULL, PREG_SPLIT_NO_EMPTY);
                        foreach ($bodyParts as $bodyPart) {
                                // skip empty parts
                                if (trim($bodyPart) == '') {
@@ -342,4 +342,4 @@ class SwiftMailerAdapter implements \TYPO3\CMS\Core\Mail\MailerAdapterInterface
 
 }
 
-?>
\ No newline at end of file
+?>
index ca12ded..92a4823 100644 (file)
@@ -255,7 +255,7 @@ class ExtensionManagementUtility {
                                                $positionArray = \TYPO3\CMS\Core\Utility\GeneralUtility::trimExplode(':', $position);
                                                if ($positionArray[0] == 'replace') {
                                                        foreach ($GLOBALS['TCA'][$table]['palettes'] as $palette => $paletteDetails) {
-                                                               if (preg_match('/\\b' . $palette . '\\b/', $typeDetails['showitem']) > 0 && preg_match('/\\b' . $positionArray[1] . '\\b/', $paletteDetails['showitem']) > 0) {
+                                                               if (preg_match('/\\b' . preg_quote($palette, '/') . '\\b/', $typeDetails['showitem']) > 0 && preg_match('/\\b' . preg_quote($positionArray[1], '/') . '\\b/', $paletteDetails['showitem']) > 0) {
                                                                        self::addFieldsToPalette($table, $palette, $str, $position);
                                                                        // Save that palette in case other types use it
                                                                        $palettesChanged[] = $palette;
@@ -269,7 +269,7 @@ class ExtensionManagementUtility {
                                                                $fieldExists = TRUE;
                                                        } else {
                                                                foreach ($GLOBALS['TCA'][$table]['palettes'] as $palette => $paletteDetails) {
-                                                                       if (preg_match('/\\b' . $palette . '\\b/', $typeDetails['showitem']) > 0 && preg_match('/\\b' . $positionArray[1] . '\\b/', $paletteDetails['showitem']) > 0) {
+                                                                       if (preg_match('/\\b' . preg_quote($palette, '/') . '\\b/', $typeDetails['showitem']) > 0 && preg_match('/\\b' . preg_quote($positionArray[1], '/') . '\\b/', $paletteDetails['showitem']) > 0) {
                                                                                $position = $positionArray[0] . ':--palette--;;' . $palette;
                                                                        }
                                                                }
@@ -280,7 +280,7 @@ class ExtensionManagementUtility {
                                                        $fieldExists = TRUE;
                                                } elseif (is_array($GLOBALS['TCA'][$table]['palettes'])) {
                                                        foreach ($GLOBALS['TCA'][$table]['palettes'] as $palette => $paletteDetails) {
-                                                               if (preg_match('/\\b' . $palette . '\\b/', $typeDetails['showitem']) > 0 && strpos($paletteDetails['showitem'], $str) !== FALSE) {
+                                                               if (preg_match('/\\b' . preg_quote($palette, '/') . '\\b/', $typeDetails['showitem']) > 0 && strpos($paletteDetails['showitem'], $str) !== FALSE) {
                                                                        $fieldExists = TRUE;
                                                                }
                                                        }
@@ -2197,4 +2197,4 @@ tt_content.' . $key . $prefix . ' {
        }
 
 }
-?>
\ No newline at end of file
+?>