summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph M. Becker <cmbecker69@gmx.de>2020-07-27 17:53:23 +0200
committerChristoph M. Becker <cmbecker69@gmx.de>2020-07-27 17:53:23 +0200
commit592f70bc46fde19c2a3041f8caaeee5b469b2eee (patch)
tree118960f7ee5d7c3502b13121cfab9d2546982d2b
parentb23188962e97a85bffd34bf40db340a2284d7708 (diff)
parentf02507469d0cb8dd202b8674c93251c59f2cbcf2 (diff)
downloadphp-git-592f70bc46fde19c2a3041f8caaeee5b469b2eee.tar.gz
Merge branch 'PHP-7.4'
* PHP-7.4: Revert "Fix #79806: realpath() erroneously resolves link to link"
-rw-r--r--Zend/zend_virtual_cwd.c14
-rw-r--r--ext/standard/tests/file/realpath_basic4.phpt6
2 files changed, 8 insertions, 12 deletions
diff --git a/Zend/zend_virtual_cwd.c b/Zend/zend_virtual_cwd.c
index 68ca4d1d7d..ac3d6773b1 100644
--- a/Zend/zend_virtual_cwd.c
+++ b/Zend/zend_virtual_cwd.c
@@ -590,7 +590,6 @@ static size_t tsrm_realpath_r(char *path, size_t start, size_t len, int *ll, tim
}
#ifdef ZEND_WIN32
-retry_reparse_point:
if (save) {
pathw = php_win32_ioutil_any_to_w(path);
if (!pathw) {
@@ -613,7 +612,7 @@ retry_reparse_point:
tmp = do_alloca(len+1, use_heap);
memcpy(tmp, path, len+1);
-retry_reparse_tag_cloud:
+retry:
if(save &&
!(IS_UNC_PATH(path, len) && len >= 3 && path[2] != '?') &&
(dataw.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)
@@ -674,7 +673,7 @@ retry_reparse_tag_cloud:
dataw.dwFileAttributes = fileInformation.dwFileAttributes;
CloseHandle(hLink);
(*ll)--;
- goto retry_reparse_tag_cloud;
+ goto retry;
}
free_alloca(tmp, use_heap);
CloseHandle(hLink);
@@ -821,15 +820,6 @@ retry_reparse_tag_cloud:
free_alloca(pbuffer, use_heap_large);
free(substitutename);
- {
- DWORD attrs = GetFileAttributesA(path);
- if (!isVolume && (attrs & FILE_ATTRIBUTE_REPARSE_POINT)) {
- free_alloca(tmp, use_heap);
- FREE_PATHW()
- goto retry_reparse_point;
- }
- }
-
if(isabsolute == 1) {
if (!((j == 3) && (path[1] == ':') && (path[2] == '\\'))) {
/* use_realpath is 0 in the call below coz path is absolute*/
diff --git a/ext/standard/tests/file/realpath_basic4.phpt b/ext/standard/tests/file/realpath_basic4.phpt
index 524dde3056..1af510d34a 100644
--- a/ext/standard/tests/file/realpath_basic4.phpt
+++ b/ext/standard/tests/file/realpath_basic4.phpt
@@ -1,5 +1,11 @@
--TEST--
Test realpath() with relative paths
+--SKIPIF--
+<?php
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+ die('skip no symlinks on Windows');
+}
+?>
--FILE--
<?php
$file_path = __DIR__;