diff options
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | ext/standard/streamsfuncs.c | 5 | ||||
-rw-r--r-- | ext/standard/tests/streams/bug74556.phpt | 22 |
3 files changed, 31 insertions, 0 deletions
@@ -5,6 +5,7 @@ PHP NEWS - Core: . Fixed bug #74658 (Undefined constants in array properties result in broken properties). (Laruence) + . Fixed misparsing of abstract unix domain socket names. (Sara) - Opcache: . Fixed bug #74663 (Segfault with opcache.memory_protect and @@ -17,6 +18,9 @@ PHP NEWS - FTP: . Fixed bug #74598 (ftp:// wrapper ignores context arg). (Sara) +- Streams: + . Fixed bug #74556 (stream_socket_get_name() returns '\0'). (Sara) + 8 Jun 2017 PHP 7.0.20 - Core: diff --git a/ext/standard/streamsfuncs.c b/ext/standard/streamsfuncs.c index 0237ae8eb7..877247e8eb 100644 --- a/ext/standard/streamsfuncs.c +++ b/ext/standard/streamsfuncs.c @@ -314,6 +314,11 @@ PHP_FUNCTION(stream_socket_get_name) RETURN_FALSE; } + if (!ZSTR_LEN(name)) { + zend_string_release(name); + RETURN_FALSE; + } + RETVAL_STR(name); } /* }}} */ diff --git a/ext/standard/tests/streams/bug74556.phpt b/ext/standard/tests/streams/bug74556.phpt new file mode 100644 index 0000000000..016a3dce86 --- /dev/null +++ b/ext/standard/tests/streams/bug74556.phpt @@ -0,0 +1,22 @@ +--TEST-- +Bug #74556 stream_socket_get_name() on unix socket returns "\0" +--SKIPIF-- +<?php +if (!strncasecmp(PHP_OS, 'WIN', 3)) echo "skip Unix Only"; +--FILE-- +<?php + +$sock = __DIR__ . '/bug74556.sock'; +$s = stream_socket_server("unix://$sock"); +$c = stream_socket_client("unix://$sock"); + +var_dump( + stream_socket_get_name($s, true), + stream_socket_get_name($c, false) +); +--CLEAN-- +<?php +unlink(__DIR__ . '/bug74556.sock'); +--EXPECT-- +bool(false) +bool(false) |