moriyoshi                                Wed, 20 Jul 2011 08:43:12 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=313466

Log:
- Better error handling.

Changed paths:
    U   php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c
    U   php/php-src/trunk/sapi/cli/php_cli_server.c

Modified: php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c
===================================================================
--- php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c      2011-07-20 
07:48:08 UTC (rev 313465)
+++ php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c      2011-07-20 
08:43:12 UTC (rev 313466)
@@ -1805,9 +1805,9 @@
        int err = 0;
        int port = 3000;
        php_socket_t server_sock = SOCK_ERR;
+       char *p = NULL;

        if (addr[0] == '[') {
-               char *p;
                host = pestrdup(addr + 1, 1);
                if (!host) {
                        return FAILURE;
@@ -1817,27 +1817,32 @@
                        *p++ = '\0';
                        if (*p == ':') {
                                port = strtol(p + 1, &p, 10);
+                               if (port <= 0) {
+                                       p = NULL;
+                               }
                        } 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, ':');
+               p = strchr(host, ':');
                if (p) {
                        *p++ = '\0';
                        port = strtol(p, &p, 10);
+                       if (port <= 0) {
+                               p = NULL;
+                       }
                }
        }
+       if (!p) {
+               fprintf(stderr, "Invalid address: %s\n", addr);
+               retval = FAILURE;
+               goto out;
+       }

        server_sock = php_network_listen_socket(host, &port, SOCK_STREAM, 
&server->address_family, &server->socklen, &errstr TSRMLS_CC);
        if (server_sock == SOCK_ERR) {

Modified: php/php-src/trunk/sapi/cli/php_cli_server.c
===================================================================
--- php/php-src/trunk/sapi/cli/php_cli_server.c 2011-07-20 07:48:08 UTC (rev 
313465)
+++ php/php-src/trunk/sapi/cli/php_cli_server.c 2011-07-20 08:43:12 UTC (rev 
313466)
@@ -1805,9 +1805,9 @@
        int err = 0;
        int port = 3000;
        php_socket_t server_sock = SOCK_ERR;
+       char *p = NULL;

        if (addr[0] == '[') {
-               char *p;
                host = pestrdup(addr + 1, 1);
                if (!host) {
                        return FAILURE;
@@ -1817,27 +1817,32 @@
                        *p++ = '\0';
                        if (*p == ':') {
                                port = strtol(p + 1, &p, 10);
+                               if (port <= 0) {
+                                       p = NULL;
+                               }
                        } 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, ':');
+               p = strchr(host, ':');
                if (p) {
                        *p++ = '\0';
                        port = strtol(p, &p, 10);
+                       if (port <= 0) {
+                               p = NULL;
+                       }
                }
        }
+       if (!p) {
+               fprintf(stderr, "Invalid address: %s\n", addr);
+               retval = FAILURE;
+               goto out;
+       }

        server_sock = php_network_listen_socket(host, &port, SOCK_STREAM, 
&server->address_family, &server->socklen, &errstr TSRMLS_CC);
        if (server_sock == SOCK_ERR) {

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to