mirror of
https://github.com/php/php-src.git
synced 2025-08-15 13:38:49 +02:00
Merge branch 'PHP-7.1'
* PHP-7.1: Fixed bug #73962 bug with symlink related to cyrillic directory
This commit is contained in:
commit
73bfa264cc
2 changed files with 82 additions and 3 deletions
|
@ -849,7 +849,7 @@ static int tsrm_realpath_r(char *path, int start, int len, int *ll, time_t *t, i
|
|||
wchar_t * reparsetarget;
|
||||
BOOL isVolume = FALSE;
|
||||
char *printname = NULL, *substitutename = NULL;
|
||||
int substitutename_len;
|
||||
size_t substitutename_len;
|
||||
int substitutename_off = 0;
|
||||
|
||||
if(++(*ll) > LINK_MAX) {
|
||||
|
@ -894,7 +894,8 @@ static int tsrm_realpath_r(char *path, int start, int len, int *ll, time_t *t, i
|
|||
}
|
||||
|
||||
substitutename_len = pbuffer->MountPointReparseBuffer.SubstituteNameLength / sizeof(WCHAR);
|
||||
substitutename = php_win32_ioutil_w_to_any(reparsetarget + pbuffer->MountPointReparseBuffer.SubstituteNameOffset / sizeof(WCHAR));
|
||||
substitutename = php_win32_cp_conv_w_to_any(reparsetarget + pbuffer->MountPointReparseBuffer.SubstituteNameOffset / sizeof(WCHAR),
|
||||
substitutename_len, &substitutename_len);
|
||||
if (!substitutename) {
|
||||
free_alloca(pbuffer, use_heap_large);
|
||||
free_alloca(tmp, use_heap);
|
||||
|
@ -916,7 +917,8 @@ static int tsrm_realpath_r(char *path, int start, int len, int *ll, time_t *t, i
|
|||
|
||||
|
||||
substitutename_len = pbuffer->MountPointReparseBuffer.SubstituteNameLength / sizeof(WCHAR);
|
||||
substitutename = php_win32_ioutil_w_to_any(reparsetarget + pbuffer->MountPointReparseBuffer.SubstituteNameOffset / sizeof(WCHAR));
|
||||
substitutename = php_win32_cp_conv_w_to_any(reparsetarget + pbuffer->MountPointReparseBuffer.SubstituteNameOffset / sizeof(WCHAR),
|
||||
substitutename_len, &substitutename_len);
|
||||
if (!substitutename) {
|
||||
free_alloca(pbuffer, use_heap_large);
|
||||
free_alloca(tmp, use_heap);
|
||||
|
|
77
ext/standard/tests/file/windows_links/bug73962.phpt
Normal file
77
ext/standard/tests/file/windows_links/bug73962.phpt
Normal file
|
@ -0,0 +1,77 @@
|
|||
--TEST--
|
||||
Bug #73962 bug with symlink related to cyrillic directory
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if(substr(PHP_OS, 0, 3) != 'WIN' ) {
|
||||
die('skip windows only test');
|
||||
}
|
||||
include_once __DIR__ . '/common.inc';
|
||||
$ret = exec('mklink bug48746_tmp.lnk ' . __FILE__ .' 2>&1', $out);
|
||||
if (strpos($ret, 'privilege')) {
|
||||
die('skip. SeCreateSymbolicLinkPrivilege not enable for this user.');
|
||||
}
|
||||
unlink('bug48746_tmp.lnk');
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
include_once __DIR__ . '/common.inc';
|
||||
$mountvol = get_mountvol();
|
||||
$old_dir = __DIR__;
|
||||
$dirname = '"' . __DIR__ . "\\mnt\\test\\новая папка" . '"';
|
||||
exec("mkdir " . $dirname, $output, $ret_val);
|
||||
chdir(__DIR__ . "\\mnt\\test");
|
||||
$drive = substr(__DIR__, 0, 2);
|
||||
$pathwithoutdrive = substr(__DIR__, 2);
|
||||
$ret = exec($mountvol . " " . $drive . " /L", $output, $ret_val);
|
||||
exec("mklink /d mounted_volume " . $ret, $output, $ret_val);
|
||||
$fullpath = "mounted_volume" . $pathwithoutdrive;
|
||||
exec("mklink /d mklink_symlink \"новая папка\"", $output, $ret_val);
|
||||
file_put_contents("mklink_symlink\\a.php", "<?php echo \"I am included.\n\" ?>");
|
||||
file_put_contents("$fullpath\\mnt\\test\\новая папка\\b.php", "<?php echo \"I am included.\n\" ?>");
|
||||
var_dump(scandir("mklink_symlink"));
|
||||
var_dump(scandir("$fullpath\\mnt\\test\\новая папка"));
|
||||
var_dump(scandir("$fullpath\\mnt\\test\\mklink_symlink"));
|
||||
var_dump(is_readable("$fullpath\\mnt\\test\\mklink_symlink\b.php"));
|
||||
unlink("$fullpath\\mnt\\test\\новая папка\\b.php");
|
||||
unlink("mklink_symlink\\a.php");
|
||||
chdir($old_dir);
|
||||
rmdir(__DIR__ . "\\mnt\\test\\новая папка");
|
||||
rmdir(__DIR__ . "\\mnt\\test\\mklink_symlink");
|
||||
rmdir(__DIR__ . "\\mnt\\test\\mounted_volume");
|
||||
rmdir(__DIR__ . "\\mnt\\test");
|
||||
rmdir(__DIR__ . "\\mnt");
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
array(4) {
|
||||
[0]=>
|
||||
string(1) "."
|
||||
[1]=>
|
||||
string(2) ".."
|
||||
[2]=>
|
||||
string(5) "a.php"
|
||||
[3]=>
|
||||
string(5) "b.php"
|
||||
}
|
||||
array(4) {
|
||||
[0]=>
|
||||
string(1) "."
|
||||
[1]=>
|
||||
string(2) ".."
|
||||
[2]=>
|
||||
string(5) "a.php"
|
||||
[3]=>
|
||||
string(5) "b.php"
|
||||
}
|
||||
array(4) {
|
||||
[0]=>
|
||||
string(1) "."
|
||||
[1]=>
|
||||
string(2) ".."
|
||||
[2]=>
|
||||
string(5) "a.php"
|
||||
[3]=>
|
||||
string(5) "b.php"
|
||||
}
|
||||
bool(true)
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue