summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortwosee <twose@qq.com>2020-07-29 17:48:01 +0800
committertwosee <twose@qq.com>2020-07-29 17:48:01 +0800
commitab9d10d0231fb89cfe82671dd866f516aeabcecf (patch)
tree03da48c7a5810ac500926f47d9fa6595453099bc
parent993be4b9bf34b2d1a7c288599b0e011aa9f33906 (diff)
parent12bd3cc14695bcdd2ffbbacfb37b5602c2288f95 (diff)
downloadphp-git-ab9d10d0231fb89cfe82671dd866f516aeabcecf.tar.gz
Merge branch 'PHP-7.4'
* PHP-7.4: Handle bindto error
-rw-r--r--ext/standard/tests/network/bindto.phpt16
-rw-r--r--main/streams/xp_socket.c4
2 files changed, 20 insertions, 0 deletions
diff --git a/ext/standard/tests/network/bindto.phpt b/ext/standard/tests/network/bindto.phpt
new file mode 100644
index 0000000000..bfff64a5e0
--- /dev/null
+++ b/ext/standard/tests/network/bindto.phpt
@@ -0,0 +1,16 @@
+--TEST--
+Test invalid bindto
+--FILE--
+<?php
+$ctx = stream_context_create([
+ 'socket' => [
+ 'bindto' => 'invalid',
+ ],
+]);
+$fp = stream_socket_client(
+ 'tcp://www.' . str_repeat('x', 100) . '.com:80',
+ $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $ctx
+);
+?>
+--EXPECTF--
+Warning: stream_socket_client(): Unable to connect to tcp://%s:80 (Failed to parse address "invalid") in %s on line %d
diff --git a/main/streams/xp_socket.c b/main/streams/xp_socket.c
index f3370e89f7..22eb976f7d 100644
--- a/main/streams/xp_socket.c
+++ b/main/streams/xp_socket.c
@@ -747,6 +747,10 @@ static inline int php_tcp_sockop_connect(php_stream *stream, php_netstream_data_
return -1;
}
bindto = parse_ip_address_ex(Z_STRVAL_P(tmpzval), Z_STRLEN_P(tmpzval), &bindport, xparam->want_errortext, &xparam->outputs.error_text);
+ if (bindto == NULL) {
+ efree(host);
+ return -1;
+ }
}
#ifdef SO_BROADCAST