From 1f8ee140b028190a8b5d475a191416f2d1a9ce1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20=C5=A0neberger?= Date: Tue, 11 May 2021 10:21:54 +0200 Subject: [PATCH] Escape api prefix --- src/Model/Request/Request.php | 2 +- tests/Model/Request/RequestTest.php | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/Model/Request/Request.php b/src/Model/Request/Request.php index 445b0c8..db41c76 100644 --- a/src/Model/Request/Request.php +++ b/src/Model/Request/Request.php @@ -142,7 +142,7 @@ public function __construct( private function parseUriPath(string $path): void { preg_match( - '/^(([a-zA-Z0-9\_\-\.\/]+.php)(\/)|)(' . $this->apiPrefix . ')([\/a-zA-Z0-9\_\-\.]+)$/', + '/^(([a-zA-Z0-9\_\-\.\/]+.php)(\/)|)(' . str_replace('/','\\/',$this->apiPrefix) . ')([\/a-zA-Z0-9\_\-\.]+)$/', trim($path, '/'), $matches ); diff --git a/tests/Model/Request/RequestTest.php b/tests/Model/Request/RequestTest.php index d8eacd2..a8c2384 100644 --- a/tests/Model/Request/RequestTest.php +++ b/tests/Model/Request/RequestTest.php @@ -57,4 +57,18 @@ public function testRequestInvalidType(): void 'api' ); } + + public function testLongUri(): void + { + try { + new Request( + 'GET', + new Uri('http://my-service.foo.bar.com/api/type/v1/resource/6004c2db-8ba3-495c-8ee2-b4d0c3deebbe/relationships/myrelation'), + null, + '/api/type/v1' + ); + } catch (\Exception $e) { + $this->fail($e->getMessage() . ' (' . $e->getFile() . ', ' . $e->getLine() . ')'); + } + } }