From 6253e9bea3d97afe34abb6a48c4a9a33ffdf7f35 Mon Sep 17 00:00:00 2001 From: Enrico Zimuel Date: Wed, 25 Jan 2017 17:58:55 +0100 Subject: [PATCH 1/2] Fixed the Expires: 0 header --- src/Header/Expires.php | 12 ++++++++++++ test/Header/ExpiresTest.php | 10 ++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/Header/Expires.php b/src/Header/Expires.php index ff2de5c82d..69a7458699 100644 --- a/src/Header/Expires.php +++ b/src/Header/Expires.php @@ -9,6 +9,9 @@ namespace Zend\Http\Header; +use DateTime; +use DateTimeZone; + /** * Expires Header * @@ -25,4 +28,13 @@ public function getFieldName() { return 'Expires'; } + + + public function setDate($date) + { + if ($date === '0') { + $date = date(DATE_W3C, 0); // Thu, 01 Jan 1970 00:00:00 GMT + } + return parent::setDate($date); + } } diff --git a/test/Header/ExpiresTest.php b/test/Header/ExpiresTest.php index 359ee8f3fb..051db8b345 100644 --- a/test/Header/ExpiresTest.php +++ b/test/Header/ExpiresTest.php @@ -54,4 +54,14 @@ public function testPreventsCRLFAttackViaFromString() { $header = Expires::fromString("Expires: Sun, 06 Nov 1994 08:49:37 GMT\r\n\r\nevilContent"); } + + public function testExpiresSetToZero() + { + $expires = Expires::fromString("Expires: 0"); + $this->assertEquals('Expires: Thu, 01 Jan 1970 00:00:00 GMT', $expires->toString()); + + $expires = new Expires(); + $expires->setDate('0'); + $this->assertEquals('Expires: Thu, 01 Jan 1970 00:00:00 GMT', $expires->toString()); + } } From aa4ee94280d869cc5dcf5f7764e83c9db795c29c Mon Sep 17 00:00:00 2001 From: Enrico Zimuel Date: Wed, 25 Jan 2017 18:20:06 +0100 Subject: [PATCH 2/2] Allow setting (int) 0 as Expires --- src/Header/Expires.php | 2 +- test/Header/ExpiresTest.php | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Header/Expires.php b/src/Header/Expires.php index 69a7458699..dec223cad0 100644 --- a/src/Header/Expires.php +++ b/src/Header/Expires.php @@ -32,7 +32,7 @@ public function getFieldName() public function setDate($date) { - if ($date === '0') { + if ($date === '0' || $date === 0) { $date = date(DATE_W3C, 0); // Thu, 01 Jan 1970 00:00:00 GMT } return parent::setDate($date); diff --git a/test/Header/ExpiresTest.php b/test/Header/ExpiresTest.php index 051db8b345..c46b7dca46 100644 --- a/test/Header/ExpiresTest.php +++ b/test/Header/ExpiresTest.php @@ -63,5 +63,9 @@ public function testExpiresSetToZero() $expires = new Expires(); $expires->setDate('0'); $this->assertEquals('Expires: Thu, 01 Jan 1970 00:00:00 GMT', $expires->toString()); + + $expires = new Expires(); + $expires->setDate(0); + $this->assertEquals('Expires: Thu, 01 Jan 1970 00:00:00 GMT', $expires->toString()); } }