mirror of
https://github.com/php/php-src.git
synced 2024-12-03 06:44:07 +08:00
fix bug #47085:rename() returns true even if the file in PHAR does not exist
This commit is contained in:
parent
b634bf4ce8
commit
fd5be66d13
1
NEWS
1
NEWS
@ -3,6 +3,7 @@ PHP NEWS
|
||||
?? ??? 2009, PHP 5.3.0 Beta 2
|
||||
- Fixed bug #47265 (generating phar.phar failes because of safe_mode). (Greg)
|
||||
- Fixed bug #47229 (preg_quote() should escape the '-' char). (Nuno)
|
||||
- Fixed bug #47085 (rename() returns true even if the file in PHAR does not exist). (Greg)
|
||||
- Fixed bug #47031 (Fix constants in DualIterator example). (Etienne)
|
||||
- Fixed bug #46347 (parse_ini_file() doesn't support * in keys). (Nuno)
|
||||
|
||||
|
@ -888,6 +888,14 @@ static int phar_wrapper_rename(php_stream_wrapper *wrapper, char *url_from, char
|
||||
is_dir = entry->is_dir;
|
||||
} else {
|
||||
is_dir = zend_hash_exists(&(phar->virtual_dirs), resource_from->path+1, strlen(resource_from->path)-1);
|
||||
if (!is_dir) {
|
||||
/* file does not exist */
|
||||
php_url_free(resource_from);
|
||||
php_url_free(resource_to);
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "phar error: cannot rename \"%s\" to \"%s\" from extracted phar archive, source does not exist", url_from, url_to);
|
||||
return 0;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/* Rename directory. Update all nested paths */
|
||||
|
24
ext/phar/tests/bug47085.phpt
Normal file
24
ext/phar/tests/bug47085.phpt
Normal file
@ -0,0 +1,24 @@
|
||||
--TEST--
|
||||
Phar: PHP bug #47085: "rename() returns true even if the file in PHAR does not exist"
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("phar")) die("skip"); ?>
|
||||
--INI--
|
||||
phar.require_hash=0
|
||||
phar.readonly=0
|
||||
--FILE--
|
||||
<?php
|
||||
$fname = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.phar';
|
||||
|
||||
$phar = new Phar($fname, 0, 'a.phar');
|
||||
$phar['x'] = 'hi';
|
||||
unset($phar);
|
||||
rename("phar://a.phar/x", "phar://a.phar/y");
|
||||
var_dump(rename("phar://a.phar/x", "phar://a.phar/y"));
|
||||
?>
|
||||
===DONE===
|
||||
--CLEAN--
|
||||
<?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phar');?>
|
||||
--EXPECTF--
|
||||
Warning: rename(): phar error: cannot rename "phar://a.phar/x" to "phar://a.phar/y" from extracted phar archive, source does not exist in %sbug47085.php on line %d
|
||||
bool(false)
|
||||
===DONE===
|
Loading…
Reference in New Issue
Block a user