Bug #31839
closedError in tslib_fe->checkPageGroupAccess with realurl if page is not found
100%
Description
If you are using the realURL extension and realURL can't determine the requested page path, the method tslib_fe::pageNotFoundAndExit will be called.
Some function-calls later the method checkPageGroupAccess is called, and PHP will crash in line 1188 with this error:
PHP Fatal error: Call to a member function getRootLine() on a non-object in typo3/sysext/cms/tslib/class.tslib_fe.php on line 1188
This happens because the object "$this->sys_page" is not set in the current tslib_fe instance (is only an empty string), it will be only created if the method "fetch_the_id" was called. But if realURL starts the 404-Error Handling "fetch_the_id" will be never called. So you must check if the object is available:
Code before patching:
// If the actual page has no fe_group, check the rootline for // inherited fe_group due to extendToSubpage-property if (intval($row['fe_group']) === 0) {
Code after patching:
// If the actual page has no fe_group, check the rootline for // inherited fe_group due to extendToSubpage-property if (intval($row['fe_group']) === 0 && $this->sys_page) {
Here is a backtrace:
typo3/sysext/cms/tslib/class.tslib_fe.php - tslib_fe->checkPageGroupAccess (1270) typo3/sysext/cms/tslib/class.tslib_fe.php - tslib_fe->getPageAccessFailureReasons (1455) typo3/sysext/cms/tslib/class.tslib_fe.php - tslib_fe->pageErrorHandler (1421) typo3/sysext/cms/tslib/class.tslib_fe.php - tslib_fe->pageNotFoundHandler (1379) typo3conf/ext/realurl/class.tx_realurl.php - tslib_fe->pageNotFoundAndExit (1676) typo3conf/ext/realurl/class.tx_realurl.php - tx_realurl->decodeSpURL_throw404 (1368) typo3conf/ext/realurl/class.tx_realurl.php - tx_realurl->decodeSpURL_settingPostVarSets (1176) typo3conf/ext/realurl/class.tx_realurl.php - tx_realurl->decodeSpURL_doDecode (1021) - tx_realurl->decodeSpURL () t3lib/class.t3lib_div.php - ->call_user_func_array (4738) typo3/sysext/cms/tslib/class.tslib_fe.php - t3lib_div->callUserFunction (563) typo3/sysext/cms/tslib/index_ts.php - tslib_fe->checkAlternativeIdMethods (277) index.php - ->require (78)
Updated by Dmitry Dulepov about 13 years ago
Note: you must user USER_FUNCTION as a pageNotFound_handling to reproduce this.
Add the following to the typo3conf/localconf.php:
$TYPO3_CONF_VARS['FE']['pageNotFound_handling'] = 'USER_FUNCTION:i_do_not_exist';
and request a non-existing page (for example, http://example.com/asdfjntgwertgqeg/). You will see the exception, if your settings allow that or a blank screen.
Agter the fix you should see a complain that i_do_not_exist was not prefixed with the ''user_''.
Updated by Mr. Hudson about 13 years ago
- Status changed from New to Under Review
Patch set 1 of change I737c1b263ca53e9d23d3bd66498974b41c83df1d has been pushed to the review server.
It is available at http://review.typo3.org/6712
Updated by Mr. Hudson about 13 years ago
Patch set 2 of change I737c1b263ca53e9d23d3bd66498974b41c83df1d has been pushed to the review server.
It is available at http://review.typo3.org/6712
Updated by Mr. Hudson about 13 years ago
Patch set 3 of change I737c1b263ca53e9d23d3bd66498974b41c83df1d has been pushed to the review server.
It is available at http://review.typo3.org/6712
Updated by Mr. Hudson about 13 years ago
Patch set 1 of change Ie49472eabd5d075b7199fb4df1e0c66f2361ede6 has been pushed to the review server.
It is available at http://review.typo3.org/6713
Updated by Mr. Jenkins about 13 years ago
Patch set 1 of change Ieb2ef07d4977ebceeee7e68c390f53f9646337b0 has been pushed to the review server.
It is available at http://review.typo3.org/6846
Updated by Xavier Perseguers about 13 years ago
- Status changed from Under Review to Resolved
- Assignee set to Dmitry Dulepov
- % Done changed from 0 to 100
Updated by Xavier Perseguers almost 13 years ago
- Status changed from Resolved to Closed