summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS4
-rw-r--r--ext/standard/streamsfuncs.c5
-rw-r--r--ext/standard/tests/streams/bug74556.phpt22
3 files changed, 31 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index c51b14ec6a..3c768adad1 100644
--- a/NEWS
+++ b/NEWS
@@ -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)