From a19f48058dab0453f248b11182c457e12e760886 Mon Sep 17 00:00:00 2001 From: Aaron Piotrowski Date: Fri, 29 Dec 2023 15:03:33 -0600 Subject: [PATCH] Revert skipping invalid cookies Returning some cookies might lead to incorrect cookie values if the header is malformed, so reverting to returning an empty array. --- src/Cookie/RequestCookie.php | 12 ++++++------ test/Cookie/RequestCookieTest.php | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Cookie/RequestCookie.php b/src/Cookie/RequestCookie.php index 501ec8a..9651d80 100644 --- a/src/Cookie/RequestCookie.php +++ b/src/Cookie/RequestCookie.php @@ -29,8 +29,8 @@ public static function fromHeader(string $string): array $cookies = \explode(";", $string); $result = []; - foreach ($cookies as $cookie) { - try { + try { + foreach ($cookies as $cookie) { // Ignore zero-length cookie. if (\trim($cookie) === '') { continue; @@ -39,21 +39,21 @@ public static function fromHeader(string $string): array $parts = \explode('=', $cookie, 2); if (\count($parts) !== 2) { - continue; + return []; } [$name, $value] = $parts; $name = \trim($name); if ($name === '') { - continue; + return []; } // We can safely trim quotes, as they're not allowed within cookie values $result[] = new self($name, \trim($value, " \t\"")); - } catch (InvalidCookieException) { - // Skip invalid cookie. } + } catch (InvalidCookieException) { + return []; } return $result; diff --git a/test/Cookie/RequestCookieTest.php b/test/Cookie/RequestCookieTest.php index fe53c28..56137ef 100644 --- a/test/Cookie/RequestCookieTest.php +++ b/test/Cookie/RequestCookieTest.php @@ -14,9 +14,9 @@ public function testParsing() $this->assertEquals([new RequestCookie("a", "1"), new RequestCookie("b", "2")], RequestCookie::fromHeader("a=1; b=2")); $this->assertEquals([new RequestCookie("a", "1"), new RequestCookie("b", "2")], RequestCookie::fromHeader("a=1 ;b=2")); $this->assertEquals([new RequestCookie("a", "1"), new RequestCookie("b", "-2")], RequestCookie::fromHeader("a=1; b = -2")); - $this->assertEquals([new RequestCookie("a", "1")], RequestCookie::fromHeader("a=1; b=2,2")); - $this->assertEquals([new RequestCookie("a", "1")], RequestCookie::fromHeader("a=1; b=2 2")); - $this->assertEquals([new RequestCookie("a", "1")], RequestCookie::fromHeader("a=1; b")); + $this->assertEquals([], RequestCookie::fromHeader("a=1; b=2,2")); + $this->assertEquals([], RequestCookie::fromHeader("a=1; b=2 2")); + $this->assertEquals([], RequestCookie::fromHeader("a=1; b")); } /**