pajoye                                   Wed, 27 Jan 2010 16:46:43 +0000

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

Log:
- don't go through the reparse code when we have a share or DFS path (should 
fix #50542)

Bug: http://bugs.php.net/50542 (Feedback) scandir() cannot open UNC paths since 
PHP 5.3.1
      
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-01-27 
16:44:48 UTC (rev 294101)
+++ php/php-src/branches/PHP_5_3/TSRM/tsrm_virtual_cwd.c        2010-01-27 
16:46:43 UTC (rev 294102)
@@ -714,7 +714,9 @@
                tmp = tsrm_do_alloca(len+1, use_heap);
                memcpy(tmp, path, len+1);

-               if(save && (data.dwFileAttributes & 
FILE_ATTRIBUTE_REPARSE_POINT)) {
+               if(save &&
+               !(IS_UNC_PATH(path, len) && len >= 3 && path[2] != '?') &&
+               (data.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)) {
                        /* File is a reparse point. Get the target */
                        HANDLE hLink = NULL;
                        REPARSE_DATA_BUFFER * pbuffer;

Modified: php/php-src/trunk/TSRM/tsrm_virtual_cwd.c
===================================================================
--- php/php-src/trunk/TSRM/tsrm_virtual_cwd.c   2010-01-27 16:44:48 UTC (rev 
294101)
+++ php/php-src/trunk/TSRM/tsrm_virtual_cwd.c   2010-01-27 16:46:43 UTC (rev 
294102)
@@ -714,7 +714,9 @@
                tmp = tsrm_do_alloca(len+1, use_heap);
                memcpy(tmp, path, len+1);

-               if(save && (data.dwFileAttributes & 
FILE_ATTRIBUTE_REPARSE_POINT)) {
+               if(save &&
+               !(IS_UNC_PATH(path, len) && len >= 3 && path[2] != '?') &&
+               (data.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)) {
                        /* File is a reparse point. Get the target */
                        HANDLE hLink = NULL;
                        REPARSE_DATA_BUFFER * pbuffer;

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

Reply via email to