diff --git a/lib/Cake/Test/Case/Controller/Component/CookieComponentTest.php b/lib/Cake/Test/Case/Controller/Component/CookieComponentTest.php index e3a8f09704f..467e7a225ae 100644 --- a/lib/Cake/Test/Case/Controller/Component/CookieComponentTest.php +++ b/lib/Cake/Test/Case/Controller/Component/CookieComponentTest.php @@ -153,6 +153,24 @@ public function testReadEncryptedCookieData() { $this->assertEquals($expected, $data); } +/** + * test read operations on corrupted cookie data. + * + * @return void + */ + public function testReadCorruptedCookieData() { + $this->Cookie->type('aes'); + $this->Cookie->key = sha1('some bad key'); + + $data = $this->_implode(array('name' => 'jill', 'age' => 24)); + // Corrupt the cookie data by slicing some bytes off. + $_COOKIE['CakeTestCookie'] = array( + 'BadData' => substr(Security::encrypt($data, $this->Cookie->key), 0, -5) + ); + $this->assertFalse($this->Cookie->check('BadData.name'), 'Key does not exist'); + $this->assertNull($this->Cookie->read('BadData.name'), 'Key does not exist'); + } + /** * testReadPlainCookieData * @@ -169,6 +187,19 @@ public function testReadPlainCookieData() { $this->assertEquals($expected, $data); } +/** + * test read array keys from string data. + * + * @return void + */ + public function testReadNestedDataFromStrings() { + $_COOKIE['CakeTestCookie'] = array( + 'User' => 'bad data' + ); + $this->assertFalse($this->Cookie->check('User.name'), 'No key'); + $this->assertNull($this->Cookie->read('User.name'), 'No key'); + } + /** * test read() after switching the cookie name. *