[BUGFIX] Avoid Uri->__toString() swallows multi-slash paths
Our PSR-7 Uri implementation has a bug when string casting an Uri object: Creating a Uri from for instance 'https://example.com//' leads to 'https://example.com/' when string casting that object. The double slash at the end is perfectly valid and of course should not be removed. The fun part is now that we have frontend functional slug tests that test 'https://website.local//' error handling and redirect behavior. Due to the old functional test behavior that had to communicate the Uri through a PHP process, the above Uri string cast bug has been triggered. This leads to the situation that the test looks as if it tested the double-slash, while in fact it didn't. When changing v11 from php-forking based frontend site test handling to sub request handling, we actively implemented this behavior in testing-framework to stay compatible. In order to drop that hack from testing-framework, the patch now: * Fixes the bug in Uri * Adds a unit test to verify (string)Uri is ok * Adds a @todo to SlugSiteRequestTest to look at the actual 'https://website.local//' behavior with a dedicated patch. Change-Id: Iea8d048e31b85d0d849542a7a9a55fcf5f220416 Related: #67558 Resolves: #96092 Releases: master, 11.5 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/72314 Tested-by:core-ci <typo3@b13.com> Tested-by:
Stefan Bürk <stefan@buerk.tech> Tested-by:
Oliver Bartsch <bo@cedev.de> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by:
Stefan Bürk <stefan@buerk.tech> Reviewed-by:
Oliver Bartsch <bo@cedev.de> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch>
Showing
- typo3/sysext/core/Classes/Http/Uri.php 3 additions, 2 deletionstypo3/sysext/core/Classes/Http/Uri.php
- typo3/sysext/core/Tests/Unit/Http/UriTest.php 11 additions, 4 deletionstypo3/sysext/core/Tests/Unit/Http/UriTest.php
- typo3/sysext/frontend/Tests/Functional/SiteHandling/SlugSiteRequestTest.php 4 additions, 2 deletions...end/Tests/Functional/SiteHandling/SlugSiteRequestTest.php
Please register or sign in to comment