com php-src: Merge branch 'PHP-7.0' into PHP-7.1: ext/standard/tests/streams/parseip-001.phpt main/streams/xp_s ocket.c

[email protected] (Joe Watkins)
Newsgroups php.cvs
Message-ID <[email protected]>
Commit:    ee9650c3d2b0ccc9bdeec3de33ad1950b8362005
Author:    Anatol Belski <[email protected]>         Thu, 27 Apr 2017 11:11:41 +0200
Committer: Joe Watkins <[email protected]>      Thu, 27 Apr 2017 21:52:47 +0100
Parents:   4951d16dba3b04657f09e6a804efd6b91cc9a187
Branches:  PHP-7.1.5

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

Log:
Merge branch 'PHP-7.0' into PHP-7.1

* PHP-7.0:
  Revert "Detect invalid port in xp_socket parse ip address"
  Revert "Follow up patch regarding bug #74216, see bug #74429"

Bugs:
https://bugs.php.net/74216
https://bugs.php.net/74429

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 b828bde..e496a2d 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 && *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 || *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.