diff options
author | twosee <twose@qq.com> | 2020-07-29 17:48:01 +0800 |
---|---|---|
committer | twosee <twose@qq.com> | 2020-07-29 17:48:01 +0800 |
commit | ab9d10d0231fb89cfe82671dd866f516aeabcecf (patch) | |
tree | 03da48c7a5810ac500926f47d9fa6595453099bc | |
parent | 993be4b9bf34b2d1a7c288599b0e011aa9f33906 (diff) | |
parent | 12bd3cc14695bcdd2ffbbacfb37b5602c2288f95 (diff) | |
download | php-git-ab9d10d0231fb89cfe82671dd866f516aeabcecf.tar.gz |
Merge branch 'PHP-7.4'
* PHP-7.4:
Handle bindto error
-rw-r--r-- | ext/standard/tests/network/bindto.phpt | 16 | ||||
-rw-r--r-- | main/streams/xp_socket.c | 4 |
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 |