diff options
author | Pierre Joye <pajoye@php.net> | 2010-09-10 19:21:02 +0000 |
---|---|---|
committer | Pierre Joye <pajoye@php.net> | 2010-09-10 19:21:02 +0000 |
commit | cd727b4e9af5907da6e771b75caef8020d55c0cc (patch) | |
tree | c09cd235327f859a5d7e65cb79df1a4502584e3b /TSRM | |
parent | 77d307ccbfe7587760b7517c1bd70f0573f35baf (diff) | |
download | php-git-cd727b4e9af5907da6e771b75caef8020d55c0cc.tar.gz |
- remove 'UNC' from the target
Diffstat (limited to 'TSRM')
-rw-r--r-- | TSRM/tsrm_virtual_cwd.c | 12 |
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); } } |