diff options
author | Michael Wallner <mike@php.net> | 2014-04-02 11:11:23 +0200 |
---|---|---|
committer | Michael Wallner <mike@php.net> | 2014-04-02 11:11:23 +0200 |
commit | 669459da8c9c3b396c9c80d751f28846f6375b19 (patch) | |
tree | 683362a7821b70c2e8b482e4849e8b8d9f617efc | |
parent | 88a44b15d7c7b68050b17c1877493668c8af10c6 (diff) | |
parent | af147ac9b7619fa56a3e6607d4109ef9c127a914 (diff) | |
download | php-git-669459da8c9c3b396c9c80d751f28846f6375b19.tar.gz |
Merge branch 'PHP-5.5' into PHP-5.6
* PHP-5.5:
Fix bug #64330
-rw-r--r-- | ext/standard/tests/network/bug64330.phpt | 20 | ||||
-rw-r--r-- | main/streams/xp_socket.c | 3 |
2 files changed, 22 insertions, 1 deletions
diff --git a/ext/standard/tests/network/bug64330.phpt b/ext/standard/tests/network/bug64330.phpt new file mode 100644 index 0000000000..1ea305cb5f --- /dev/null +++ b/ext/standard/tests/network/bug64330.phpt @@ -0,0 +1,20 @@ +--TEST-- +Bug #64330 (stream_socket_server() creates wrong Abstract Namespace UNIX sockets) +--SKIPIF-- +<?php +if (!in_array("unix", stream_get_transports())) die("SKIP unix domain sockets unavailable"); +?> +--FILE-- +<?php +echo "Test\n"; +$server = stream_socket_server("unix://\x00/MyBindName"); +$client = stream_socket_client("unix://\x00/MyBindName"); +if ($client) { + echo "ok\n"; +} +?> +===DONE=== +--EXPECT-- +Test +ok +===DONE=== diff --git a/main/streams/xp_socket.c b/main/streams/xp_socket.c index 9cef91cbb4..a6dc115962 100644 --- a/main/streams/xp_socket.c +++ b/main/streams/xp_socket.c @@ -588,7 +588,8 @@ static inline int php_tcp_sockop_bind(php_stream *stream, php_netstream_data_t * parse_unix_address(xparam, &unix_addr TSRMLS_CC); - return bind(sock->socket, (struct sockaddr *)&unix_addr, sizeof(unix_addr)); + return bind(sock->socket, (const struct sockaddr *)&unix_addr, + (socklen_t) XtOffsetOf(struct sockaddr_un, sun_path) + xparam->inputs.namelen); } #endif |