Skip to content

Commit 324e589

Browse files
authored
Merge pull request #72 from laminas/2.16.x-merge-up-into-2.17.x_GOMQun0G
Merge release 2.16.1 into 2.17.x
2 parents ac4588d + 838825d commit 324e589

File tree

3 files changed

+19
-1
lines changed

3 files changed

+19
-1
lines changed

src/Response.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,12 @@
1414
use function gzuncompress;
1515
use function hexdec;
1616
use function implode;
17+
use function in_array;
1718
use function is_array;
1819
use function is_float;
1920
use function is_numeric;
2021
use function is_scalar;
22+
use function ord;
2123
use function preg_match;
2224
use function sprintf;
2325
use function strlen;
@@ -648,7 +650,7 @@ protected function decodeDeflate($body)
648650
*/
649651
$zlibHeader = unpack('n', substr($body, 0, 2));
650652

651-
if ($zlibHeader[1] % 31 === 0) {
653+
if ($zlibHeader[1] % 31 === 0 && ord($body[0]) === 0x78 && in_array(ord($body[1]), [0x01, 0x5e, 0x9c, 0xda])) {
652654
return gzuncompress($body);
653655
}
654656
return gzinflate($body);

test/ResponseTest.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,22 @@ public function testNonStandardDeflateResponseLaminas6040()
290290
$this->assertEquals('c830dd74bb502443cf12514c185ff174', md5($res->getContent()));
291291
}
292292

293+
/**
294+
* Make sure there no confusion with complient "deflate" responses.
295+
*
296+
* @link https://framework.zend.com/issues/browse/ZF-12457.html
297+
*/
298+
public function testStandardDeflateResponseLaminas12457()
299+
{
300+
$responseTest = file_get_contents(__DIR__ . '/_files/response_deflate_iis_valid');
301+
302+
$res = Response::fromString($responseTest);
303+
304+
$this->assertEquals('deflate', $res->getHeaders()->get('Content-encoding')->getFieldValue());
305+
$this->assertEquals('fa2f670a2da7cd7f0aee953ce5785fa8', md5($res->getBody()));
306+
$this->assertEquals('992ec500e8332df89bbd9b8e998ec8c9', md5($res->getContent()));
307+
}
308+
293309
public function testChunkedResponse()
294310
{
295311
$responseTest = file_get_contents(__DIR__ . '/_files/response_chunked');
22.7 KB
Binary file not shown.

0 commit comments

Comments
 (0)