Bug #89126
closedPageRouter ignores id=123 parameter if page record does not load
100%
Description
In PageRouter there exists a check if $_GET['id'] is provided, in which case, the legacy page handling is supposed to take priority.
But because of the way the condition is created, failure to resolve a page record (becuase of invalid uid) never triggers any error handling. Instead, the condition falls through to the "else" case which then resolves the default start page of the domain - because it ignores the "id" parameter and sees a single URL slug valued "/".
The solution is two parts: 1) if "id" is provided, never allow fallback to using site root page, and 2) if "id" does not resolve a page, trigger the error handler.
Condition is:
if (!empty($requestId) && ($page = $this->resolvePageId($requestId)) (
// no error handling happens here
} else {
// site configuration fallbacks processedhere
}
And must instead me:
if (!empty($requestId)) {
$page = $this->resolvePageId($requestId);
if (!$page) {
// trigger error handling
}
// existing processing for legacy ID
} else {
// site configuration fallback now explicitly can only happen if $requestId is not provided.
}
Updated by Gerrit Code Review about 5 years ago
- Status changed from New to Under Review
Patch set 1 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/c/Packages/TYPO3.CMS/+/61657
Updated by Gerrit Code Review about 5 years ago
Patch set 2 for branch 9.5 of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/c/Packages/TYPO3.CMS/+/61657
Updated by Anonymous about 5 years ago
- Status changed from Under Review to Resolved
- % Done changed from 0 to 100
Applied in changeset deebd9f48e9a27174eda5bc719cd1d088bdc7c1a.