VCWD_GETCWD is sufficient.

On Wed, Sep 21, 2011 at 1:49 AM, Moriyoshi Koizumi <m...@mozo.jp> wrote:
> Hi,
>
> Where does HAVE_BROKEN_GETCWD come from? Isn't simply using VCWD_GETCWD 
> sufficient?
>
> Moriyoshi
>
> On 2011/09/20, at 16:06, Xinchen Hui wrote:
>
>> laruence                                 Tue, 20 Sep 2011 07:06:55 +0000
>>
>> Revision: http://svn.php.net/viewvc?view=revision&revision=317040
>>
>> Log:
>> Fix Bug #55726 (Changing the working directory makes router script 
>> inaccessible)
>>
>> Bug: https://bugs.php.net/55726 (Assigned) Changing the working directory 
>> makes router script inaccessible
>>
>> Changed paths:
>>    U   php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c
>>    U   php/php-src/trunk/sapi/cli/php_cli_server.c
>>
>> Modified: php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c
>> ===================================================================
>> --- php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c    2011-09-20 
>> 05:42:36 UTC (rev 317039)
>> +++ php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c    2011-09-20 
>> 07:06:55 UTC (rev 317040)
>> @@ -1877,11 +1877,24 @@
>>       }
>>       {
>>               zend_file_handle zfd;
>> +#if HAVE_BROKEN_GETCWD
>> +             int old_cwd_fd = -1;
>> +             old_cwd_fd = open(".", 0);
>> +#else
>> +             char *old_cwd;
>> +             ALLOCA_FLAG(use_heap)
>> +#define OLD_CWD_SIZE 4096
>> +             old_cwd = do_alloca(OLD_CWD_SIZE, use_heap);
>> +             old_cwd[0] = '\0';
>> +             php_ignore_value(VCWD_GETCWD(old_cwd, OLD_CWD_SIZE-1));
>> +#endif
>> +
>>               zfd.type = ZEND_HANDLE_FILENAME;
>>               zfd.filename = server->router;
>>               zfd.handle.fp = NULL;
>>               zfd.free_filename = 0;
>>               zfd.opened_path = NULL;
>> +
>>               zend_try {
>>                       zval *retval = NULL;
>>                       if (SUCCESS == zend_execute_scripts(ZEND_REQUIRE 
>> TSRMLS_CC, &retval, 1, &zfd)) {
>> @@ -1893,6 +1906,18 @@
>>                               decline = 1;
>>                       }
>>               } zend_end_try();
>> +
>> +#if HAVE_BROKEN_GETCWD
>> +             if (old_cwd_fd != -1) {
>> +                     fchdir(old_cwd_fd);
>> +                     close(old_cwd_fd);
>> +             }
>> +#else
>> +             if (old_cwd[0] != '\0') {
>> +                     php_ignore_value(VCWD_CHDIR(old_cwd));
>> +             }
>> +             free_alloca(old_cwd, use_heap);
>> +#endif
>>       }
>>
>>       if (decline) {
>>
>> Modified: php/php-src/trunk/sapi/cli/php_cli_server.c
>> ===================================================================
>> --- php/php-src/trunk/sapi/cli/php_cli_server.c       2011-09-20 05:42:36 
>> UTC (rev 317039)
>> +++ php/php-src/trunk/sapi/cli/php_cli_server.c       2011-09-20 07:06:55 
>> UTC (rev 317040)
>> @@ -1877,11 +1877,24 @@
>>       }
>>       {
>>               zend_file_handle zfd;
>> +#if HAVE_BROKEN_GETCWD
>> +             int old_cwd_fd = -1;
>> +             old_cwd_fd = open(".", 0);
>> +#else
>> +             char *old_cwd;
>> +             ALLOCA_FLAG(use_heap)
>> +#define OLD_CWD_SIZE 4096
>> +             old_cwd = do_alloca(OLD_CWD_SIZE, use_heap);
>> +             old_cwd[0] = '\0';
>> +             php_ignore_value(VCWD_GETCWD(old_cwd, OLD_CWD_SIZE-1));
>> +#endif
>> +
>>               zfd.type = ZEND_HANDLE_FILENAME;
>>               zfd.filename = server->router;
>>               zfd.handle.fp = NULL;
>>               zfd.free_filename = 0;
>>               zfd.opened_path = NULL;
>> +
>>               zend_try {
>>                       zval *retval = NULL;
>>                       if (SUCCESS == zend_execute_scripts(ZEND_REQUIRE 
>> TSRMLS_CC, &retval, 1, &zfd)) {
>> @@ -1893,6 +1906,18 @@
>>                               decline = 1;
>>                       }
>>               } zend_end_try();
>> +
>> +#if HAVE_BROKEN_GETCWD
>> +             if (old_cwd_fd != -1) {
>> +                     fchdir(old_cwd_fd);
>> +                     close(old_cwd_fd);
>> +             }
>> +#else
>> +             if (old_cwd[0] != '\0') {
>> +                     php_ignore_value(VCWD_CHDIR(old_cwd));
>> +             }
>> +             free_alloca(old_cwd, use_heap);
>> +#endif
>>       }
>>
>>       if (decline) {
>>
>> --
>> PHP CVS Mailing List (http://www.php.net/)
>> To unsubscribe, visit: http://www.php.net/unsub.php
>
> --
> Moriyoshi Koizumi
> m...@mozo.jp
>
>
>
>
> --
> PHP CVS Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>



-- 
Pierre

@pierrejoye | http://blog.thepimp.net | http://www.libgd.org

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

Reply via email to