pajoye                                   Mon, 13 Sep 2010 10:58:18 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=303315

Log:
- sanity check for the path length and don't treat UNC as local path (no 
functional change, only less ops)

Changed paths:
    U   php/php-src/branches/PHP_5_3/TSRM/tsrm_virtual_cwd.c
    U   php/php-src/trunk/TSRM/tsrm_virtual_cwd.c

Modified: php/php-src/branches/PHP_5_3/TSRM/tsrm_virtual_cwd.c
===================================================================
--- php/php-src/branches/PHP_5_3/TSRM/tsrm_virtual_cwd.c        2010-09-13 
10:47:32 UTC (rev 303314)
+++ php/php-src/branches/PHP_5_3/TSRM/tsrm_virtual_cwd.c        2010-09-13 
10:58:18 UTC (rev 303315)
@@ -273,17 +273,20 @@
 {
        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);

Modified: php/php-src/trunk/TSRM/tsrm_virtual_cwd.c
===================================================================
--- php/php-src/trunk/TSRM/tsrm_virtual_cwd.c   2010-09-13 10:47:32 UTC (rev 
303314)
+++ php/php-src/trunk/TSRM/tsrm_virtual_cwd.c   2010-09-13 10:58:18 UTC (rev 
303315)
@@ -273,17 +273,20 @@
 {
        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);

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to