diff options
| author | Christoph M. Becker <cmbecker69@gmx.de> | 2020-07-27 17:53:23 +0200 |
|---|---|---|
| committer | Christoph M. Becker <cmbecker69@gmx.de> | 2020-07-27 17:53:23 +0200 |
| commit | 592f70bc46fde19c2a3041f8caaeee5b469b2eee (patch) | |
| tree | 118960f7ee5d7c3502b13121cfab9d2546982d2b | |
| parent | b23188962e97a85bffd34bf40db340a2284d7708 (diff) | |
| parent | f02507469d0cb8dd202b8674c93251c59f2cbcf2 (diff) | |
| download | php-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.c | 14 | ||||
| -rw-r--r-- | ext/standard/tests/file/realpath_basic4.phpt | 6 |
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__; |
