]> granicus.if.org Git - php/commitdiff
- sanity check for the path length and don't treat UNC as local path (no functional...
authorPierre Joye <pajoye@php.net>
Mon, 13 Sep 2010 10:58:18 +0000 (10:58 +0000)
committerPierre Joye <pajoye@php.net>
Mon, 13 Sep 2010 10:58:18 +0000 (10:58 +0000)
TSRM/tsrm_virtual_cwd.c

index 2544f005cb7b929dced56adf2a335510a5ca4c81..02a6a4999fb46760b7008339d8cf26b8530b4cd6 100644 (file)
@@ -273,17 +273,20 @@ CWD_API int php_sys_stat_ex(const char *path, struct stat *buf, int lstat) /* {{
 {
        WIN32_FILE_ATTRIBUTE_DATA data;
        __int64 t;
+       const size_t path_len = strlen(path);
 
        if (!GetFileAttributesEx(path, GetFileExInfoStandard, &data)) {
                return stat(path, buf);
        }
 
-       if (path[1] == ':') {
+       if (path_len >= 1 && path[1] == ':') {
                if (path[0] >= 'A' && path[0] <= 'Z') {
                        buf->st_dev = buf->st_rdev = path[0] - 'A';
                } else {
                        buf->st_dev = buf->st_rdev = path[0] - 'a';
                }
+       } else if (IS_UNC_PATH(path, path_len)) {
+               buf->st_dev = buf->st_rdev = 0;
        } else {
                char  cur_path[MAXPATHLEN+1];
                DWORD len = sizeof(cur_path);