diff options
author | Ferdinand Thiessen <opensource@fthiessen.de> | 2025-05-15 13:57:03 +0200 |
---|---|---|
committer | Ferdinand Thiessen <opensource@fthiessen.de> | 2025-05-15 13:57:14 +0200 |
commit | e4ed062d689776617b3b5be055ed256f07ada6d3 (patch) | |
tree | 407be2828423f03323d9e1f97c65c3e27dfcb04d | |
parent | 63ba61487b1d15c1bf5e991d269bab612d56283a (diff) | |
download | nextcloud-server-refactor/app/remove-register-routes.tar.gz nextcloud-server-refactor/app/remove-register-routes.zip |
fix(RouteParser): bail out if method name contains hashtagrefactor/app/remove-register-routes
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
-rw-r--r-- | lib/private/AppFramework/Routing/RouteParser.php | 2 | ||||
-rw-r--r-- | tests/lib/AppFramework/Routing/RouteParserTest.php | 9 |
2 files changed, 10 insertions, 1 deletions
diff --git a/lib/private/AppFramework/Routing/RouteParser.php b/lib/private/AppFramework/Routing/RouteParser.php index 6dffe7861ac..55e58234673 100644 --- a/lib/private/AppFramework/Routing/RouteParser.php +++ b/lib/private/AppFramework/Routing/RouteParser.php @@ -76,7 +76,7 @@ class RouteParser { $url = $root . '/' . ltrim($route['url'], '/'); $verb = strtoupper($route['verb'] ?? 'GET'); - $split = explode('#', $name, 2); + $split = explode('#', $name, 3); if (count($split) !== 2) { throw new \UnexpectedValueException('Invalid route name: use the format foo#bar to reference FooController::bar'); } diff --git a/tests/lib/AppFramework/Routing/RouteParserTest.php b/tests/lib/AppFramework/Routing/RouteParserTest.php index ddfe0594ab2..406c5f1f3a5 100644 --- a/tests/lib/AppFramework/Routing/RouteParserTest.php +++ b/tests/lib/AppFramework/Routing/RouteParserTest.php @@ -142,6 +142,15 @@ class RouteParserTest extends \Test\TestCase { $this->parser->parseDefaultRoutes($routes, 'app1'); } + public function testParseRoutesInvalidName2(): void { + $routes = ['routes' => [ + ['name' => 'folders#open#action', 'url' => '/{folderId}/open', 'verb' => 'GET'] + ]]; + + $this->expectException(\UnexpectedValueException::class); + $this->parser->parseDefaultRoutes($routes, 'app1'); + } + public function testParseRoutesEmpty(): void { $routes = ['routes' => []]; |