diff options
Diffstat (limited to 'sapi/cli/php_cli_server.c')
-rw-r--r-- | sapi/cli/php_cli_server.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/sapi/cli/php_cli_server.c b/sapi/cli/php_cli_server.c index 1f9e5abe4f..a9e08f11bc 100644 --- a/sapi/cli/php_cli_server.c +++ b/sapi/cli/php_cli_server.c @@ -2552,6 +2552,10 @@ int do_cli_server(int argc, char **argv) /* {{{ */ const char *server_bind_address = NULL; extern const opt_struct OPTIONS[]; const char *document_root = NULL; +#ifdef PHP_WIN32 + char document_root_tmp[MAXPATHLEN]; + size_t k; +#endif const char *router = NULL; char document_root_buf[MAXPATHLEN]; @@ -2561,7 +2565,23 @@ int do_cli_server(int argc, char **argv) /* {{{ */ server_bind_address = php_optarg; break; case 't': +#ifndef PHP_WIN32 document_root = php_optarg; +#else + k = strlen(php_optarg); + if (k + 1 > MAXPATHLEN) { + fprintf(stderr, "Document root path is too long.\n"); + return 1; + } + memmove(document_root_tmp, php_optarg, k + 1); + /* Clean out any trailing garbage that might have been passed + from a batch script. */ + do { + document_root_tmp[k] = '\0'; + k--; + } while ('"' == document_root_tmp[k] || ' ' == document_root_tmp[k]); + document_root = document_root_tmp; +#endif break; } } |