summaryrefslogtreecommitdiff
path: root/TSRM
diff options
context:
space:
mode:
authorPierre Joye <pajoye@php.net>2010-01-27 16:46:43 +0000
committerPierre Joye <pajoye@php.net>2010-01-27 16:46:43 +0000
commite130a31441459d22ac646e1f80ae75ccda27aa61 (patch)
tree9135ed7f31c087a691e4e2a7a65f64908c784d98 /TSRM
parent84b59b8582307de25047f9178134a29f0160f5fc (diff)
downloadphp-git-e130a31441459d22ac646e1f80ae75ccda27aa61.tar.gz
- don't go through the reparse code when we have a share or DFS path (should fix #50542)
Diffstat (limited to 'TSRM')
-rw-r--r--TSRM/tsrm_virtual_cwd.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/TSRM/tsrm_virtual_cwd.c b/TSRM/tsrm_virtual_cwd.c
index ed4e5a3d71..66949fabcc 100644
--- a/TSRM/tsrm_virtual_cwd.c
+++ b/TSRM/tsrm_virtual_cwd.c
@@ -714,7 +714,9 @@ static int tsrm_realpath_r(char *path, int start, int len, int *ll, time_t *t, i
tmp = tsrm_do_alloca(len+1, use_heap);
memcpy(tmp, path, len+1);
- if(save && (data.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)) {
+ if(save &&
+ !(IS_UNC_PATH(path, len) && len >= 3 && path[2] != '?') &&
+ (data.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)) {
/* File is a reparse point. Get the target */
HANDLE hLink = NULL;
REPARSE_DATA_BUFFER * pbuffer;