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")); } /**