com php-src: Revert "Detect invalid port in xp_socket parse ip address": ext/standard/tests/streams/parseip-0 01.phpt main/streams/xp_socket.c

[email protected] (Anatol Belski)
Newsgroups php.cvs
Message-ID <[email protected]>
Commit:    09ef61e3ca33d8f91b188cd0ad2512987671962b
Author:    Anatol Belski <[email protected]>         Thu, 27 Apr 2017 02:49:12 +0200
Parents:   bf3e2dce7b54988d82f16ee3564c14f1b5cd936b
Branches:  PHP-7.0 PHP-7.1 master

Link:       http://git.php.net/?p=php-src.git;a=commitdiff;h=09ef61e3ca33d8f91b188cd0ad2512987671962b

Log:
Revert "Detect invalid port in xp_socket parse ip address"

This reverts commit bab0b99f376dac9170ac81382a5ed526938d595a.

Changed paths:
  D  ext/standard/tests/streams/parseip-001.phpt
  M  main/streams/xp_socket.c


Diff:
diff --git a/ext/standard/tests/streams/parseip-001.phpt b/ext/standard/tests/streams/parseip-001.phpt
deleted file mode 100644
index 594756d..0000000
--- a/ext/standard/tests/streams/parseip-001.phpt
+++ /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
diff --git a/main/streams/xp_socket.c b/main/streams/xp_socket.c
index 3ff6478..701a993 100644
--- a/main/streams/xp_socket.c
+++ b/main/streams/xp_socket.c
@@ -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)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.