summaryrefslogtreecommitdiff
path: root/sapi/cli/php_cli_server.c
diff options
context:
space:
mode:
authorXinchen Hui <laruence@gmail.com>2017-10-15 10:29:28 +0800
committerXinchen Hui <laruence@gmail.com>2017-10-15 10:29:28 +0800
commit9f5ed133b35c77f7f7255a786d45b8e7afac929e (patch)
treec2f0d1c1113320a466dc64f4e2725f7c82271fba /sapi/cli/php_cli_server.c
parentabbdbc21b0f285f86ccd3ba01074fd5e9de2a26f (diff)
parentb9b2ae703ccbc76ef817aaa15d7d91a994a775cb (diff)
downloadphp-git-9f5ed133b35c77f7f7255a786d45b8e7afac929e.tar.gz
Merge branch 'PHP-7.1' into PHP-7.2
* PHP-7.1: Update NEWS Fixed bug #75287 (Builtin webserver crash after chdir in a shutdown function)
Diffstat (limited to 'sapi/cli/php_cli_server.c')
-rw-r--r--sapi/cli/php_cli_server.c30
1 files changed, 14 insertions, 16 deletions
diff --git a/sapi/cli/php_cli_server.c b/sapi/cli/php_cli_server.c
index 80ce4781ee..1097b4769c 100644
--- a/sapi/cli/php_cli_server.c
+++ b/sapi/cli/php_cli_server.c
@@ -2095,12 +2095,6 @@ static int php_cli_server_dispatch_router(php_cli_server *server, php_cli_server
{
int decline = 0;
zend_file_handle zfd;
- char *old_cwd;
-
- ALLOCA_FLAG(use_heap)
- old_cwd = do_alloca(MAXPATHLEN, use_heap);
- old_cwd[0] = '\0';
- php_ignore_value(VCWD_GETCWD(old_cwd, MAXPATHLEN - 1));
zfd.type = ZEND_HANDLE_FILENAME;
zfd.filename = server->router;
@@ -2122,12 +2116,6 @@ static int php_cli_server_dispatch_router(php_cli_server *server, php_cli_server
}
} zend_end_try();
- if (old_cwd[0] != '\0') {
- php_ignore_value(VCWD_CHDIR(old_cwd));
- }
-
- free_alloca(old_cwd, use_heap);
-
return decline;
}
/* }}} */
@@ -2319,10 +2307,20 @@ static int php_cli_server_ctor(php_cli_server *server, const char *addr, const c
if (router) {
size_t router_len = strlen(router);
- _router = pestrndup(router, router_len, 1);
- if (!_router) {
- retval = FAILURE;
- goto out;
+ if (!IS_ABSOLUTE_PATH(router, router_len)) {
+ _router = pemalloc(server->document_root_len + router_len + 2, 1);
+ if (!_router) {
+ retval = FAILURE;
+ goto out;
+ }
+ snprintf(_router,
+ server->document_root_len + router_len + 2, "%s%c%s", server->document_root, DEFAULT_SLASH, router);
+ } else {
+ _router = pestrndup(router, router_len, 1);
+ if (!_router) {
+ retval = FAILURE;
+ goto out;
+ }
}
server->router = _router;
server->router_len = router_len;