]> granicus.if.org Git - php/commitdiff
Revert "Detect invalid port in xp_socket parse ip address"
authorAnatol Belski <ab@php.net>
Thu, 27 Apr 2017 00:49:12 +0000 (02:49 +0200)
committerAnatol Belski <ab@php.net>
Thu, 27 Apr 2017 00:49:12 +0000 (02:49 +0200)
This reverts commit bab0b99f376dac9170ac81382a5ed526938d595a.

ext/standard/tests/streams/parseip-001.phpt [deleted file]
main/streams/xp_socket.c

diff --git a/ext/standard/tests/streams/parseip-001.phpt b/ext/standard/tests/streams/parseip-001.phpt
deleted file mode 100644 (file)
index 594756d..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
---TEST--
-Use of double-port in fsockopen()
---FILE--
-<?php
-
-$try = [
-  '127.0.0.1:80',
-  'tcp://127.0.0.1:80',
-  '[::1]:80',
-  'tcp://[::1]:80',
-  'localhost:80',
-  'tcp://localhost:80',
-];
-
-foreach ($try as $addr) {
-  echo "== $addr ==\n";
-  var_dump(@fsockopen($addr, 81, $errno, $errstr), $errstr);
-}
---EXPECTF--
-== 127.0.0.1:80 ==
-bool(false)
-string(41) "Failed to parse address "127.0.0.1:80:81""
-== tcp://127.0.0.1:80 ==
-bool(false)
-string(41) "Failed to parse address "127.0.0.1:80:81""
-== [::1]:80 ==
-bool(false)
-string(37) "Failed to parse address "[::1]:80:81""
-== tcp://[::1]:80 ==
-bool(false)
-string(37) "Failed to parse address "[::1]:80:81""
-== localhost:80 ==
-bool(false)
-string(41) "Failed to parse address "localhost:80:81""
-== tcp://localhost:80 ==
-bool(false)
-string(41) "Failed to parse address "localhost:80:81""
\ No newline at end of file
index 3ff64787aa147968261ad03c2daf85920784be81..701a993ccc1d474a019ca6478f99a7f96c69a96c 100644 (file)
@@ -571,44 +571,37 @@ static inline char *parse_ip_address_ex(const char *str, size_t str_len, int *po
        char *host = NULL;
 
 #ifdef HAVE_IPV6
+       char *p;
+
        if (*(str) == '[' && str_len > 1) {
                /* IPV6 notation to specify raw address with port (i.e. [fe80::1]:80) */
-               char *p = memchr(str + 1, ']', str_len - 2), *e = NULL;
+               p = memchr(str + 1, ']', str_len - 2);
                if (!p || *(p + 1) != ':') {
                        if (get_err) {
                                *err = strpprintf(0, "Failed to parse IPv6 address \"%s\"", str);
                        }
                        return NULL;
                }
-               *portno = strtol(p + 2, &e, 10);
-               if (e && *e) {
-                       if (get_err) {
-                               *err = strpprintf(0, "Failed to parse address \"%s\"", str);
-                       }
-                       return NULL;
-               }
+               *portno = atoi(p + 2);
                return estrndup(str + 1, p - str - 1);
        }
 #endif
-
        if (str_len) {
                colon = memchr(str, ':', str_len - 1);
        } else {
                colon = NULL;
        }
-
        if (colon) {
-               char *e = NULL;
-               *portno = strtol(colon + 1, &e, 10);
-               if (!e || !*e) {
-                       return estrndup(str, colon - str);
+               *portno = atoi(colon + 1);
+               host = estrndup(str, colon - str);
+       } else {
+               if (get_err) {
+                       *err = strpprintf(0, "Failed to parse address \"%s\"", str);
                }
+               return NULL;
        }
 
-       if (get_err) {
-               *err = strpprintf(0, "Failed to parse address \"%s\"", str);
-       }
-       return NULL;
+       return host;
 }
 
 static inline char *parse_ip_address(php_stream_xport_param *xparam, int *portno)