Re: [PATCH] Small patch for CLI server regarding IPv6 and commandline parsing
| From: | Florian Anderiasch | Date: | Wed, 29 Jun 2011 07:30:55 +0000 |
| Subject: | Re: [PATCH] Small patch for CLI server regarding IPv6 and commandline parsing | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-53647@lists.php.net to get a copy of this message | ||
Oops,
please have a look at the correct diff :)
http://pastie.org/2138369
--- sapi/cli/php_cli_server.c.old 2011-06-29 09:08:28.971479778 +0200
+++ sapi/cli/php_cli_server.c 2011-06-28 19:43:23.123167815 +0200
@@ -1799,13 +1799,28 @@
}
{
- char *p = strchr(host, ':');
- if (p) {
+ char *p = strrchr(host, ':');
+ char *end = strchr(host, ']');
+ if (p && (end == NULL || p > end)) {
*p++ = '\0';
port = strtol(p, &p, 10);
+ if (port < 0 || port > 65535) {
+ printf(stderr, "Invalid built-in web-server addr:port argument\n");
+ return FAILURE;
+ }
}
}
+ if (*host == '[' && host[strlen(host)-1] == ']') {
+ char v6address[40];
+ int success = sscanf(host, "\[%39[^]]\]", v6address);
+ if (success != 1) {
+ php_cli_server_logf("Failed to listen on %s:%d (reason: %s)"
TSRMLS_CC, host, port, errstr ? errstr: "?");
+ return FAILURE;
+ }
+ host = pestrdup(v6address, 1);
+ }
+
server_sock = php_network_listen_socket(host, &port, SOCK_STREAM,
&server->address_family, &server->socklen, &errstr TSRMLS_CC);
if (server_sock == SOCK_ERR) {
php_cli_server_logf("Failed to listen on %s:%d (reason: %s)"
TSRMLS_CC, host, port, errstr ? errstr: "?");