mirror of
https://github.com/php/php-src.git
synced 2024-09-23 02:47:26 +00:00
Merge branch 'PHP-8.1'
* PHP-8.1: Fix #77978: Dirname ending in colon unzips to wrong dir
This commit is contained in:
commit
6e55bd9a4f
@ -105,8 +105,8 @@ static char * php_zip_make_relative_path(char *path, size_t path_len) /* {{{ */
|
||||
return path;
|
||||
}
|
||||
|
||||
if (i >= 2 && (path[i -1] == '.' || path[i -1] == ':')) {
|
||||
/* i is the position of . or :, add 1 for / */
|
||||
if (i >= 2 && path[i -1] == '.') {
|
||||
/* i is the position of ., add 1 for / */
|
||||
path_begin = path + i + 1;
|
||||
break;
|
||||
}
|
||||
|
37
ext/zip/tests/bug77978.phpt
Normal file
37
ext/zip/tests/bug77978.phpt
Normal file
@ -0,0 +1,37 @@
|
||||
--TEST--
|
||||
Bug #77978 (Dirname ending in colon unzips to wrong dir)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded("zip")) die("skip zip extension not available");
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
$file = __DIR__ . "/bug77978.zip";
|
||||
$target = __DIR__ . "/bug77978";
|
||||
|
||||
mkdir($target);
|
||||
|
||||
$zip = new ZipArchive();
|
||||
$zip->open($file, ZipArchive::CREATE|ZipArchive::OVERWRITE);
|
||||
$zip->addFromString("dir/test:/filename.txt", "contents");
|
||||
$zip->close();
|
||||
|
||||
$zip->open($file);
|
||||
// Windows won't extract filenames with colons; we suppress the warning
|
||||
@$zip->extractTo($target, "dir/test:/filename.txt");
|
||||
$zip->close();
|
||||
|
||||
var_dump(!file_exists("$target/filename.txt"));
|
||||
var_dump(PHP_OS_FAMILY === "Windows" || file_exists("$target/dir/test:/filename.txt"));
|
||||
?>
|
||||
--EXPECT--
|
||||
bool(true)
|
||||
bool(true)
|
||||
--CLEAN--
|
||||
<?php
|
||||
@unlink(__DIR__ . "/bug77978.zip");
|
||||
@unlink(__DIR__ . "/bug77978/dir/test:/filename.txt");
|
||||
@rmdir(__DIR__ . "/bug77978/dir/test:");
|
||||
@rmdir(__DIR__ . "/bug77978/dir");
|
||||
@rmdir(__DIR__ . "/bug77978");
|
||||
?>
|
Loading…
Reference in New Issue
Block a user