[BUGFIX] BackendUtility::viewOnClick() called with non-integer 51/22951/5
authorOliver Hader <oliver@typo3.org>
Thu, 8 Aug 2013 10:48:24 +0000 (12:48 +0200)
committerChristian Kuhn <lolli@schwarzbu.ch>
Fri, 11 Oct 2013 14:07:46 +0000 (16:07 +0200)
The origin is in DatabaseRecordList::makeControl() that
tries to create a preview link with the page id "243#33163"
- more strict checks will deny this request because it's not
the expected integer value. Thus, BackendUtility::viewOnClick()
is called with a string instead of an integer.
This happens in the regular list module in the TYPO3 backend.
It's not critical if hooks and further processors use intval() on the
argument, but is bad if methods expect the defined integer value.

Change-Id: Ib66c1ee219b67e51d534f11fbf1eaa330476ca93
Fixes: #50912
Releases: 4.5, 6.0, 6.1, 6.2
Reviewed-on: https://review.typo3.org/22951
Reviewed-by: Sascha Egerer
Tested-by: Sascha Egerer
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php

index b7b1c63..7400212 100644 (file)
@@ -1011,8 +1011,16 @@ class DatabaseRecordList extends \TYPO3\CMS\Recordlist\RecordList\AbstractDataba
                $permsEdit = $table == 'pages' && $localCalcPerms & 2 || $table != 'pages' && $this->calcPerms & 16;
                // "Show" link (only pages and tt_content elements)
                if ($table == 'pages' || $table == 'tt_content') {
-                       $params = '&edit[' . $table . '][' . $row['uid'] . ']=edit';
-                       $cells['view'] = '<a href="#" onclick="' . htmlspecialchars(BackendUtility::viewOnClick(($table == 'tt_content' ? $this->id . '#' . $row['uid'] : $row['uid']), $this->backPath)) . '" title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:labels.showPage', TRUE) . '">' . IconUtility::getSpriteIcon('actions-document-view') . '</a>';
+                       $cells['view'] = '<a href="#" onclick="'
+                               . htmlspecialchars(
+                                       BackendUtility::viewOnClick(
+                                               ($table === 'tt_content' ? $this->id : $row['uid']),
+                                               $this->backPath,
+                                               '',
+                                               ($table === 'tt_content' ? '#' . $row['uid'] : '')
+                                       )
+                               ) . '" title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:labels.showPage', TRUE) . '">'
+                               . IconUtility::getSpriteIcon('actions-document-view') . '</a>';
                } elseif (!$this->table) {
                        $cells['view'] = $this->spaceIcon;
                }