mirror of
https://github.com/php/php-src.git
synced 2024-09-22 02:17:32 +00:00
Fixed bug#53872 (internal corruption of phar)
This commit is contained in:
parent
269724ebcc
commit
e723c7631c
1
NEWS
1
NEWS
@ -8,6 +8,7 @@ PHP NEWS
|
||||
|
||||
- Phar:
|
||||
. Fixed bug#52013 (Unable to decompress files in a compressed phar). (Hannes)
|
||||
. Fixed bug#53872 (internal corruption of phar). (Hannes)
|
||||
|
||||
- NSAPI SAPI:
|
||||
. Don't set $_SERVER['HTTPS'] on unsecure connection (bug #55403). (Uwe
|
||||
|
23
ext/phar/tests/bug53872.phpt
Normal file
23
ext/phar/tests/bug53872.phpt
Normal file
@ -0,0 +1,23 @@
|
||||
--TEST--
|
||||
bug#53872 (internal corruption of phar)
|
||||
--INI--
|
||||
phar.readonly=0
|
||||
--FILE--
|
||||
<?php
|
||||
$p=new Phar('bug53872-phar.phar');
|
||||
$p->buildFromDirectory(__DIR__ . "/bug53872/");
|
||||
$p->setStub('<?php __HALT_COMPILER();?\>');
|
||||
$p->compressFiles(Phar::GZ);
|
||||
|
||||
print(file_get_contents('phar://bug53872-phar.phar/first.txt'));
|
||||
print(file_get_contents('phar://bug53872-phar.phar/second.txt'));
|
||||
print(file_get_contents('phar://bug53872-phar.phar/third.txt'));
|
||||
?>
|
||||
--CLEAN--
|
||||
<?php
|
||||
unlink("bug53872-phar.phar");
|
||||
?>
|
||||
--EXPECT--
|
||||
content of first.txt
|
||||
content of third.txt
|
||||
|
1
ext/phar/tests/bug53872/first.txt
Normal file
1
ext/phar/tests/bug53872/first.txt
Normal file
@ -0,0 +1 @@
|
||||
content of first.txt
|
0
ext/phar/tests/bug53872/second.txt
Normal file
0
ext/phar/tests/bug53872/second.txt
Normal file
1
ext/phar/tests/bug53872/third.txt
Normal file
1
ext/phar/tests/bug53872/third.txt
Normal file
@ -0,0 +1 @@
|
||||
content of third.txt
|
@ -1000,10 +1000,12 @@ int phar_open_entry_fp(phar_entry_info *entry, char **error, int follow_links TS
|
||||
php_stream_filter_append(&ufp->writefilters, filter);
|
||||
php_stream_seek(phar_get_entrypfp(entry TSRMLS_CC), phar_get_fp_offset(entry TSRMLS_CC), SEEK_SET);
|
||||
|
||||
if (SUCCESS != phar_stream_copy_to_stream(phar_get_entrypfp(entry TSRMLS_CC), ufp, entry->compressed_filesize, NULL)) {
|
||||
spprintf(error, 4096, "phar error: internal corruption of phar \"%s\" (actual filesize mismatch on file \"%s\")", phar->fname, entry->filename);
|
||||
php_stream_filter_remove(filter, 1 TSRMLS_CC);
|
||||
return FAILURE;
|
||||
if (entry->uncompressed_filesize) {
|
||||
if (SUCCESS != phar_stream_copy_to_stream(phar_get_entrypfp(entry TSRMLS_CC), ufp, entry->compressed_filesize, NULL)) {
|
||||
spprintf(error, 4096, "phar error: internal corruption of phar \"%s\" (actual filesize mismatch on file \"%s\")", phar->fname, entry->filename);
|
||||
php_stream_filter_remove(filter, 1 TSRMLS_CC);
|
||||
return FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
php_stream_filter_flush(filter, 1);
|
||||
|
Loading…
Reference in New Issue
Block a user