mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Fix socket_export_stream() with wrong protocol
Closes GH-12310.
This commit is contained in:
parent
e127f87114
commit
b5da98b972
3 changed files with 24 additions and 9 deletions
3
NEWS
3
NEWS
|
@ -59,6 +59,9 @@ PHP NEWS
|
|||
. Fix return type of stub of xml_parse_into_struct(). (nielsdos)
|
||||
. Fix memory leak when calling xml_parse_into_struct() twice. (nielsdos)
|
||||
|
||||
- Sockets:
|
||||
. Fix socket_export_stream() with wrong protocol (twosee)
|
||||
|
||||
28 Sep 2023, PHP 8.1.24
|
||||
|
||||
- Core:
|
||||
|
|
|
@ -2251,7 +2251,7 @@ PHP_FUNCTION(socket_export_stream)
|
|||
php_socket *socket;
|
||||
php_stream *stream = NULL;
|
||||
php_netstream_data_t *stream_data;
|
||||
char *protocol = NULL;
|
||||
const char *protocol = NULL;
|
||||
size_t protocollen = 0;
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "O", &zsocket, socket_ce) == FAILURE) {
|
||||
|
@ -2287,12 +2287,12 @@ PHP_FUNCTION(socket_export_stream)
|
|||
if (protoid == IPPROTO_TCP)
|
||||
#endif
|
||||
{
|
||||
protocol = "tcp";
|
||||
protocollen = 3;
|
||||
protocol = "tcp://";
|
||||
protocollen = sizeof("tcp://") - 1;
|
||||
}
|
||||
} else if (protoid == SOCK_DGRAM) {
|
||||
protocol = "udp";
|
||||
protocollen = 3;
|
||||
protocol = "udp://";
|
||||
protocollen = sizeof("udp://") - 1;
|
||||
}
|
||||
#ifdef PF_UNIX
|
||||
} else if (socket->type == PF_UNIX) {
|
||||
|
@ -2302,11 +2302,11 @@ PHP_FUNCTION(socket_export_stream)
|
|||
getsockopt(socket->bsd_socket, SOL_SOCKET, SO_TYPE, (char *) &type, &typelen);
|
||||
|
||||
if (type == SOCK_STREAM) {
|
||||
protocol = "unix";
|
||||
protocollen = 4;
|
||||
protocol = "unix://";
|
||||
protocollen = sizeof("unix://") - 1;
|
||||
} else if (type == SOCK_DGRAM) {
|
||||
protocol = "udg";
|
||||
protocollen = 3;
|
||||
protocol = "udg://";
|
||||
protocollen = sizeof("udg://") - 1;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
12
ext/sockets/tests/bug_export_stream_type.phpt
Normal file
12
ext/sockets/tests/bug_export_stream_type.phpt
Normal file
|
@ -0,0 +1,12 @@
|
|||
--TEST--
|
||||
Bug - socket_export_stream() with wrong protocol
|
||||
--EXTENSIONS--
|
||||
sockets
|
||||
--FILE--
|
||||
<?php
|
||||
$sock = socket_create(AF_INET, SOCK_DGRAM, 0);
|
||||
$stream = socket_export_stream($sock);
|
||||
echo stream_get_meta_data($stream)['stream_type']. "\n";
|
||||
?>
|
||||
--EXPECT--
|
||||
udp_socket
|
Loading…
Add table
Add a link
Reference in a new issue