svn: /php/php-src/ branches/PHP_5_4/sapi/cli/php_cli_server.c trunk/sapi/cli/php_cli_server.c
| From: | Xinchen Hui | Date: | Tue, 20 Sep 2011 07:06:55 +0000 |
| Subject: | svn: /php/php-src/ branches/PHP_5_4/sapi/cli/php_cli_server.c trunk/sapi/cli/php_cli_server.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-66595@lists.php.net to get a copy of this message | ||
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) {