mirror of
https://github.com/php/php-src.git
synced 2026-03-27 09:42:22 +01:00
Improved readlink, supress \??\ and use the drive syntax only
This commit is contained in:
@@ -106,7 +106,7 @@ PHP_FUNCTION(readlink)
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
dwRet = pGetFinalPathNameByHandle(hFile, Path, MAXPATHLEN, VOLUME_NAME_NT);
|
||||
dwRet = pGetFinalPathNameByHandle(hFile, Path, MAXPATHLEN, VOLUME_NAME_DOS);
|
||||
if(dwRet >= MAXPATHLEN) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can't resolve the full path, the path exceeds the MAX_PATH_LEN (%d) limit", MAXPATHLEN);
|
||||
RETURN_FALSE;
|
||||
@@ -117,7 +117,14 @@ PHP_FUNCTION(readlink)
|
||||
/* Append NULL to the end of the string */
|
||||
Path[dwRet] = '\0';
|
||||
|
||||
RETURN_STRING(Path, 1);
|
||||
if(dwRet > 4) {
|
||||
/* Skip first 4 characters if they are "\??\" */
|
||||
if(Path[0] == '\\' && Path[0] == '\\' && Path[1] == '?' && Path[2] == '?' && Path[3] == '\\') {
|
||||
RETURN_STRING(Path + 4, 1);
|
||||
}
|
||||
} else {
|
||||
RETURN_STRING(Path, 1);
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user