[php-src] Issue #21376: gzfile and readgzfile no longer identify corrupted gzip data
[email protected] (splitbrain)
| Newsgroups | php.bugs |
|---|---|
| Message-ID | <[email protected]> |
Issue: https://github.com/php/php-src/issues/21376
Author: splitbrain
### Description
Using this (invalid) gzip file: [corrupt.txt.gz](https://github.com/user-attachments/files/25815648/corrupt.txt.gz) for testing below.
> Just for completion: this is what happens using zcat/gzip - it can't decode it and thinks it's encrypted. It's not, it's just garbage.
> ```
> $ zcat corrupt.txt.gz
> gzip: corrupt.txt.gz is encrypted -- not supported
> ```
The following code:
```php
<?php
var_dump(gzfile("corrupt.txt.gz"));
```
Resulted in this output:
```
array(2) {
[0]=>
string(8) "x�� U"
[1]=>
string(6) "I-.��"
}
```
But I expected this output instead:
```
array(0) {
}
```
Running the same code with PHP < 8.5.3 (including 8.5.2) will result in the expected empty array.
The same issue exists when using `readgzfile()`: all older versions will return `-1` while 8.5.3 returns binary data.
### PHP Version
```plain
PHP 8.5.3 (cli) (built: Feb 12 2026 16:29:14) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.5.3, Copyright (c) Zend Technologies
with Xdebug v3.5.1, Copyright (c) 2002-2026, by Derick Rethans
with Zend OPcache v8.5.3, Copyright (c), by Zend Technologies
```
### Operating System
ArchLinux