1
0
mirror of https://github.com/php/php-src.git synced 2026-03-29 11:42:17 +02:00

Bugfix #74556 stream_socket_get_name() returns empty string

The original bug report had it returning '\0',
but with a fix to abstract name handling (6d2d0bbda7)
it now actually returns ''.

Neither of these are good, as per unix(7)
an empty socket name indicates an unbound name
and "should not be inspected".
This commit is contained in:
Sara Golemon
2017-05-28 07:23:57 -07:00
parent 6d2d0bbda7
commit 8dcfec9789
3 changed files with 31 additions and 0 deletions

4
NEWS
View File

@@ -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:

View File

@@ -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);
}
/* }}} */

View File

@@ -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)