com php-src: Handle bindto error: ext/standard/tests/network/bindto.phpt main/streams/xp_socket.c
| From: | QiHao ChenCao | Date: | Wed, 29 Jul 2020 09:46:27 +0000 |
| Subject: | com php-src: Handle bindto error: ext/standard/tests/network/bindto.phpt main/streams/xp_socket.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-112426@lists.php.net to get a copy of this message | ||
Commit: 0b8c83f5936581942715d14883cdebddc18bad30
Author: twosee <twose@qq.com> Wed, 29 Jul 2020 12:59:44 +0800
Parents: 9a744c66e70d34293eb3726cc9d17a3ddc052e30
Branches: PHP-7.3 PHP-7.4 master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=0b8c83f5936581942715d14883cdebddc18bad30
Log:
Handle bindto error
Closes GH-5903.
Changed paths:
A ext/standard/tests/network/bindto.phpt
M main/streams/xp_socket.c
Diff:
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 0ae0c0f77b...4bca670b84 100644
--- a/main/streams/xp_socket.c
+++ b/main/streams/xp_socket.c
@@ -744,6 +744,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