diff options
author | Xinchen Hui <laruence@gmail.com> | 2017-10-15 10:29:28 +0800 |
---|---|---|
committer | Xinchen Hui <laruence@gmail.com> | 2017-10-15 10:29:28 +0800 |
commit | 9f5ed133b35c77f7f7255a786d45b8e7afac929e (patch) | |
tree | c2f0d1c1113320a466dc64f4e2725f7c82271fba /sapi/cli/php_cli_server.c | |
parent | abbdbc21b0f285f86ccd3ba01074fd5e9de2a26f (diff) | |
parent | b9b2ae703ccbc76ef817aaa15d7d91a994a775cb (diff) | |
download | php-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.c | 30 |
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; |