Index: class.tslib_fe.php =================================================================== --- typo3/sysext/cms/tslib/class.tslib_fe.php (revision 5580) +++ typo3/sysext/cms/tslib/class.tslib_fe.php (working copy) @@ -998,7 +998,7 @@ * @return void * @access private */ - function getPageAndRootline() { + function getPageAndRootline($itera=20) { $this->page = $this->sys_page->getPage($this->id); if (!count($this->page)) { // If no page, we try to find the page before in the rootLine. @@ -1045,6 +1045,7 @@ } } + $this->pageNotFound=0; // Is the ID a link to another page?? if ($this->page['doktype']==4) { $this->MP = ''; // We need to clear MP if the page is a shortcut. Reason is if the short cut goes to another page, then we LEAVE the rootline which the MP expects. @@ -1097,10 +1098,18 @@ exit; } } else { - $el = reset($this->rootLine); - $this->id = $el['uid']; - $this->page = $this->sys_page->getPage($this->id); - $this->rootLine = $this->sys_page->getRootLine($this->id,$this->MP); + if ($itera>0) { + $this->pageNotFound=0; + $el = reset($this->rootLine); + $this->id = $el['uid']; + $this->getPageAndRootline($itera-1); + } else { + $message = 'The requested page was not accessible due to much shortcut loopings into non accessible pages!'; + header('HTTP/1.0 403 No Access'); + t3lib_div::sysLog($message, 'cms', t3lib_div::SYSLOG_SEVERITY_ERROR); + $this->printError($message); + exit; + } } } }