Skip to content

Commit 91a9d24

Browse files
committed
Fix bug #64330
stream_socket_server() creates wrong Abstract Namespace UNIX sockets
1 parent f244513 commit 91a9d24

3 files changed

Lines changed: 27 additions & 1 deletion

File tree

NEWS

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
PHP NEWS
22
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
33
?? ??? 2014, PHP 5.4.28
4+
5+
- Core:
6+
. Fixed bug #64330 (stream_socket_server() creates wrong Abstract Namespace
7+
UNIX sockets). (Mike)
8+
49
- Embed:
510
. Fixed bug #65715 (php5embed.lib isn't provided anymore). (Anatol)
611

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
--TEST--
2+
Bug #64330 (stream_socket_server() creates wrong Abstract Namespace UNIX sockets)
3+
--SKIPIF--
4+
<?php
5+
if (!in_array("unix", stream_get_transports())) die("SKIP unix domain sockets unavailable");
6+
?>
7+
--FILE--
8+
<?php
9+
echo "Test\n";
10+
$server = stream_socket_server("unix://\x00/MyBindName");
11+
$client = stream_socket_client("unix://\x00/MyBindName");
12+
if ($client) {
13+
echo "ok\n";
14+
}
15+
?>
16+
===DONE===
17+
--EXPECT--
18+
Test
19+
ok
20+
===DONE===

main/streams/xp_socket.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -588,7 +588,8 @@ static inline int php_tcp_sockop_bind(php_stream *stream, php_netstream_data_t *
588588

589589
parse_unix_address(xparam, &unix_addr TSRMLS_CC);
590590

591-
return bind(sock->socket, (struct sockaddr *)&unix_addr, sizeof(unix_addr));
591+
return bind(sock->socket, (const struct sockaddr *)&unix_addr,
592+
(socklen_t) XtOffsetOf(struct sockaddr_un, sun_path) + xparam->inputs.namelen);
592593
}
593594
#endif
594595

0 commit comments

Comments
 (0)