mirror of
https://github.com/php/php-src.git
synced 2024-09-23 10:57:26 +00:00
fix segfault, add separate tar test for readonly=0 on corrupted tar
This commit is contained in:
parent
bd0d9e8de3
commit
632a633154
@ -1796,9 +1796,9 @@ int phar_create_or_parse_filename(char *fname, int fname_len, char *alias, int a
|
||||
php_stream_close(fp);
|
||||
return FAILURE;
|
||||
}
|
||||
php_stream_close(fp);
|
||||
}
|
||||
|
||||
php_stream_close(fp);
|
||||
|
||||
if (PHAR_G(readonly)) {
|
||||
if (options & REPORT_ERRORS) {
|
||||
@ -1890,7 +1890,7 @@ int phar_open_filename(char *fname, int fname_len, char *alias, int alias_len, i
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
fp = php_stream_open_wrapper(fname, "rb", IGNORE_URL|STREAM_MUST_SEEK|REPORT_ERRORS, NULL);
|
||||
fp = php_stream_open_wrapper(fname, "rb", IGNORE_URL|STREAM_MUST_SEEK, NULL);
|
||||
|
||||
if (!fp) {
|
||||
if (options & REPORT_ERRORS) {
|
||||
|
@ -3,9 +3,6 @@ Phar: tar-based phar corrupted
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded('phar')) die('skip'); ?>
|
||||
<?php if (!extension_loaded("spl")) die("skip SPL not available"); ?>
|
||||
--INI--
|
||||
phar.readonly=0
|
||||
phar.require_hash=0
|
||||
--FILE--
|
||||
<?php
|
||||
include dirname(__FILE__) . '/make_invalid_tar.php.inc';
|
||||
@ -14,9 +11,9 @@ $a->init();
|
||||
$a->addFile('tar_001.phpt', __FILE__);
|
||||
$a->close();
|
||||
|
||||
$a = fopen('phar://tar_001.phar/tar_001.phpt', 'rb');
|
||||
$a = fopen('phar://' . dirname(__FILE__) . '/tar_001.phar/tar_001.phpt', 'rb');
|
||||
try {
|
||||
$a = new Phar('tar_001.phar');
|
||||
$a = new Phar(dirname(__FILE__) . '/tar_001.phar');
|
||||
echo "should not execute\n";
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage() . "\n";
|
||||
@ -28,6 +25,6 @@ echo $e->getMessage() . "\n";
|
||||
@unlink(dirname(__FILE__) . '/tar_001.phar');
|
||||
?>
|
||||
--EXPECTF--
|
||||
Warning: fopen(phar://tar_001.phar/tar_001.phpt): failed to open stream: phar error: "tar_001.phar" is a corrupted tar file in %s/tar_001.php on line %d
|
||||
Cannot open phar file 'tar_001.phar' with alias '(null)': phar error: "tar_001.phar" is a corrupted tar file
|
||||
Warning: fopen(phar://%s/tar_001.phar/tar_001.phpt): failed to open stream: phar error: "%s/tar_001.phar" is a corrupted tar file in %s/tar_001.php on line %d
|
||||
Cannot open phar file '%s/tar_001.phar' with alias '(null)': phar error: "%s/tar_001.phar" is a corrupted tar file
|
||||
===DONE===
|
32
ext/phar/tests/tar/tar_002.phpt
Normal file
32
ext/phar/tests/tar/tar_002.phpt
Normal file
@ -0,0 +1,32 @@
|
||||
--TEST--
|
||||
Phar: tar-based phar corrupted 2
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded('phar')) die('skip'); ?>
|
||||
<?php if (!extension_loaded("spl")) die("skip SPL not available"); ?>
|
||||
--INI--
|
||||
phar.readonly=0
|
||||
--FILE--
|
||||
<?php
|
||||
include dirname(__FILE__) . '/make_invalid_tar.php.inc';
|
||||
$a = new corrupter(dirname(__FILE__) . '/tar_002.phar', 'none');
|
||||
$a->init();
|
||||
$a->addFile('tar_002.phpt', __FILE__);
|
||||
$a->close();
|
||||
|
||||
$a = fopen('phar://' . dirname(__FILE__) . '/tar_002.phar/tar_002.phpt', 'rb');
|
||||
try {
|
||||
$a = new Phar(dirname(__FILE__) . '/tar_002.phar');
|
||||
echo "should not execute\n";
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage() . "\n";
|
||||
}
|
||||
?>
|
||||
===DONE===
|
||||
--CLEAN--
|
||||
<?php
|
||||
@unlink(dirname(__FILE__) . '/tar_002.phar');
|
||||
?>
|
||||
--EXPECTF--
|
||||
Warning: fopen(phar://%s/tar_002.phar/tar_002.phpt): failed to open stream: phar error: "%s/tar_002.phar" is a corrupted tar file in %s/tar_002.php on line %d
|
||||
Cannot open phar file '%s/tar_002.phar' with alias '(null)': phar error: "%s/tar_002.phar" is a corrupted tar file
|
||||
===DONE===
|
Loading…
Reference in New Issue
Block a user