mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
- Fixed bug #55073 (PHP-CLI-webserver does not listen on ipv6 interfaces), letting getaddrinfo(3) validate IPv6 addresses.
This commit is contained in:
parent
b03817afb5
commit
a07a4af30b
1 changed files with 27 additions and 11 deletions
|
@ -1806,17 +1806,33 @@ static int php_cli_server_ctor(php_cli_server *server, const char *addr, const c
|
||||||
int port = 3000;
|
int port = 3000;
|
||||||
php_socket_t server_sock = SOCK_ERR;
|
php_socket_t server_sock = SOCK_ERR;
|
||||||
|
|
||||||
host = pestrdup(addr, 1);
|
if (addr[0] == '[') {
|
||||||
if (!host || *host == ':' ) {
|
char *p;
|
||||||
if (host) {
|
host = pestrdup(addr + 1, 1);
|
||||||
pefree(host, 1);
|
if (!host) {
|
||||||
|
return FAILURE;
|
||||||
}
|
}
|
||||||
fprintf(stderr, "Invalid built-in web-server addr:port argument\n");
|
p = strchr(host, ']');
|
||||||
return FAILURE;
|
if (p) {
|
||||||
}
|
*p++ = '\0';
|
||||||
|
if (*p == ':') {
|
||||||
{
|
port = strtol(p + 1, &p, 10);
|
||||||
char *p = strchr(host, ':');
|
} else if (*p != '\0') {
|
||||||
|
p = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!p) {
|
||||||
|
fprintf(stderr, "Invalid IPv6 address: %s\n", host);
|
||||||
|
retval = FAILURE;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
char *p;
|
||||||
|
host = pestrdup(addr, 1);
|
||||||
|
if (!host) {
|
||||||
|
return FAILURE;
|
||||||
|
}
|
||||||
|
p = strrchr(host, ':');
|
||||||
if (p) {
|
if (p) {
|
||||||
*p++ = '\0';
|
*p++ = '\0';
|
||||||
port = strtol(p, &p, 10);
|
port = strtol(p, &p, 10);
|
||||||
|
@ -2106,7 +2122,7 @@ int do_cli_server(int argc, char **argv TSRMLS_DC) /* {{{ */
|
||||||
}
|
}
|
||||||
sapi_module.phpinfo_as_text = 0;
|
sapi_module.phpinfo_as_text = 0;
|
||||||
|
|
||||||
printf("PHP Development Server is listening on %s:%d in %s ... Press Ctrl-C to quit.\n", server.host, server.port, document_root);
|
printf("PHP Development Server is listening on %s in %s ... Press Ctrl-C to quit.\n", server_bind_address, document_root);
|
||||||
|
|
||||||
#if defined(HAVE_SIGNAL_H) && defined(SIGINT)
|
#if defined(HAVE_SIGNAL_H) && defined(SIGINT)
|
||||||
signal(SIGINT, php_cli_server_sigint_handler);
|
signal(SIGINT, php_cli_server_sigint_handler);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue