mirror of
https://github.com/php/php-src.git
synced 2025-08-19 17:04:47 +02:00
fix Bug #43793: zlib filter is unable to auto-detect gzip/zlib file headers
This commit is contained in:
parent
3a6acb42b2
commit
49e181eff1
2 changed files with 42 additions and 1 deletions
41
ext/zlib/tests/zlib_filter_inflate2.phpt
Normal file
41
ext/zlib/tests/zlib_filter_inflate2.phpt
Normal file
|
@ -0,0 +1,41 @@
|
|||
--TEST--
|
||||
zlib.inflate of gzip-encoded stream
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("zlib")) print "skip"; ?>
|
||||
--FILE--
|
||||
<?php /* $Id$ */
|
||||
|
||||
$a = gzopen(dirname(__FILE__) . '/test.txt.gz', 'w');
|
||||
fwrite($a, "This is quite the thing ain't it\n");
|
||||
fclose($a);
|
||||
|
||||
$fp = fopen(dirname(__FILE__) . '/test.txt.gz', 'r');
|
||||
stream_filter_append($fp, 'zlib.inflate', STREAM_FILTER_READ);
|
||||
echo fread($fp, 2000);
|
||||
fclose($fp);
|
||||
echo "1\n";
|
||||
$fp = fopen(dirname(__FILE__) . '/test.txt.gz', 'r');
|
||||
// zlib format
|
||||
$fp = fopen(dirname(__FILE__) . '/test.txt.gz', 'r');
|
||||
stream_filter_append($fp, 'zlib.inflate', STREAM_FILTER_READ, array('window' => 15+16));
|
||||
echo "2\n";
|
||||
echo fread($fp, 2000);
|
||||
fclose($fp);
|
||||
// auto-detect
|
||||
$fp = fopen(dirname(__FILE__) . '/test.txt.gz', 'r');
|
||||
stream_filter_append($fp, 'zlib.inflate', STREAM_FILTER_READ, array('window' => 15+32));
|
||||
echo "3\n";
|
||||
echo fread($fp, 2000);
|
||||
fclose($fp);
|
||||
|
||||
?>
|
||||
--CLEAN--
|
||||
<?php
|
||||
@unlink(dirname(__FILE__) . '/test.txt.gz');
|
||||
?>
|
||||
--EXPECT--
|
||||
1
|
||||
2
|
||||
This is quite the thing ain't it
|
||||
3
|
||||
This is quite the thing ain't it
|
|
@ -323,7 +323,7 @@ static php_stream_filter *php_zlib_filter_create(const char *filtername, zval *f
|
|||
/* log-2 base of history window (9 - 15) */
|
||||
SEPARATE_ZVAL(tmpzval);
|
||||
convert_to_long_ex(tmpzval);
|
||||
if (Z_LVAL_PP(tmpzval) < -MAX_WBITS || Z_LVAL_PP(tmpzval) > MAX_WBITS) {
|
||||
if (Z_LVAL_PP(tmpzval) < -MAX_WBITS || Z_LVAL_PP(tmpzval) > MAX_WBITS + 32) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid parameter give for window size. (%ld)", Z_LVAL_PP(tmpzval));
|
||||
} else {
|
||||
windowBits = Z_LVAL_PP(tmpzval);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue