[BUGFIX] BackendUtility::viewOnClick() called with non-integer 64/23064/4
authorOliver Hader <oliver@typo3.org>
Thu, 8 Aug 2013 10:48:24 +0000 (12:48 +0200)
committerOliver Hader <oliver.hader@typo3.org>
Fri, 11 Oct 2013 15:53:40 +0000 (17:53 +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/23064
Reviewed-by: Oliver Hader
Tested-by: Oliver Hader
typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php

index 3239aee..3b07517 100644 (file)
@@ -1003,8 +1003,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(\TYPO3\CMS\Backend\Utility\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) . '">' . \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIcon('actions-document-view') . '</a>';
+                       $cells['view'] = '<a href="#" onclick="'
+                               . htmlspecialchars(
+                                       \TYPO3\CMS\Backend\Utility\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) . '">'
+                               . \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIcon('actions-document-view') . '</a>';
                } elseif (!$this->table) {
                        $cells['view'] = $this->spaceIcon;
                }