summaryrefslogtreecommitdiff
path: root/TSRM
diff options
context:
space:
mode:
authorPierre Joye <pajoye@php.net>2010-09-10 19:21:02 +0000
committerPierre Joye <pajoye@php.net>2010-09-10 19:21:02 +0000
commitcd727b4e9af5907da6e771b75caef8020d55c0cc (patch)
treec09cd235327f859a5d7e65cb79df1a4502584e3b /TSRM
parent77d307ccbfe7587760b7517c1bd70f0573f35baf (diff)
downloadphp-git-cd727b4e9af5907da6e771b75caef8020d55c0cc.tar.gz
- remove 'UNC' from the target
Diffstat (limited to 'TSRM')
-rw-r--r--TSRM/tsrm_virtual_cwd.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/TSRM/tsrm_virtual_cwd.c b/TSRM/tsrm_virtual_cwd.c
index 9e07da6ef6..49ca126770 100644
--- a/TSRM/tsrm_virtual_cwd.c
+++ b/TSRM/tsrm_virtual_cwd.c
@@ -249,9 +249,17 @@ CWD_API int php_sys_readlink(const char *link, char *target, size_t target_len){
/* Skip first 4 characters if they are "\??\" */
if(target[0] == '\\' && target[1] == '\\' && target[2] == '?' && target[3] == '\\') {
char tmp[MAXPATHLEN];
-
+ unsigned int offset = 4;
dwRet -= 4;
- memcpy(tmp, target + 4, dwRet);
+
+ /* \??\UNC\ */
+ if (dwRet > 7 && target[4] == 'U' && target[5] == 'N' && target[6] == 'C') {
+ offset += 2;
+ dwRet -= 2;
+ target[offset] = '\\';
+ }
+
+ memcpy(tmp, target + offset, dwRet);
memcpy(target, tmp, dwRet);
}
}