[BUGFIX] cObjRenderer->prefixComment() needs parameter validation 73/35973/4
authorPhilipp Gampe <philipp.gampe@typo3.org>
Mon, 12 Jan 2015 17:14:17 +0000 (18:14 +0100)
committerMarkus Klein <klein.t3@reelworx.at>
Mon, 12 Jan 2015 19:35:37 +0000 (20:35 +0100)
The method fails to validate the parameters leading to PHP notices
if the function is used incorrectly in TypoScript.

Resolves: #38969
Releases: master,6.2
Change-Id: If27d530cc70bb7ed4e9baa6f040b66ff2213223b
Reviewed-on: http://review.typo3.org/35973
Reviewed-by: Mathias Schreiber <mathias.schreiber@wmdb.de>
Tested-by: Mathias Schreiber <mathias.schreiber@wmdb.de>
Reviewed-by: Markus Klein <klein.t3@reelworx.at>
Tested-by: Markus Klein <klein.t3@reelworx.at>
typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php

index ef232da..33869f7 100644 (file)
@@ -3447,8 +3447,8 @@ class ContentObjectRenderer {
         * @return string The processed input value
         */
        public function stdWrap_prefixComment($content = '', $conf = array()) {
-               if (!$GLOBALS['TSFE']->config['config']['disablePrefixComment']) {
-                       $content = $this->prefixComment($conf['prefixComment'], $conf['prefixComment.'], $content);
+               if (!$GLOBALS['TSFE']->config['config']['disablePrefixComment'] && !empty($conf['prefixComment'])) {
+                       $content = $this->prefixComment($conf['prefixComment'], array(), $content);
                }
                return $content;
        }
@@ -3882,8 +3882,17 @@ class ContentObjectRenderer {
         * @see stdWrap()
         */
        public function prefixComment($str, $conf, $content) {
+               if (empty($str)) {
+                       return $content;
+               }
                $parts = explode('|', $str);
-               $output = LF . str_pad('', $parts[0], TAB) . '<!-- ' . htmlspecialchars($this->insertData($parts[1])) . ' [begin] -->' . LF . str_pad('', ($parts[0] + 1), TAB) . $content . LF . str_pad('', $parts[0], TAB) . '<!-- ' . htmlspecialchars($this->insertData($parts[1])) . ' [end] -->' . LF . str_pad('', ($parts[0] + 1), TAB);
+               $indent = (int)$parts[0];
+               $comment = htmlspecialchars($this->insertData($parts[1]));
+               $output = LF
+                       . str_pad('', $indent, TAB) . '<!-- ' . $comment . ' [begin] -->' . LF
+                       . str_pad('', ($indent + 1), TAB) . $content . LF
+                       . str_pad('', $indent, TAB) . '<!-- ' . $comment . ' [end] -->' . LF
+                       . str_pad('', ($indent + 1), TAB);
                return $output;
        }