From dae11b37be2b3bdba4b3eae23126e9236b162df8 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Sun, 5 Oct 2025 13:09:10 +0100 Subject: [PATCH 1/2] ext/sockets: socket_recvfrom() add test for missing port argument error message --- .../socket_recvfrom_ipv4_missing_port_arg.phpt | 17 +++++++++++++++++ .../socket_recvfrom_ipv6_missing_port_arg.phpt | 17 +++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 ext/sockets/tests/socket_recvfrom_ipv4_missing_port_arg.phpt create mode 100644 ext/sockets/tests/socket_recvfrom_ipv6_missing_port_arg.phpt diff --git a/ext/sockets/tests/socket_recvfrom_ipv4_missing_port_arg.phpt b/ext/sockets/tests/socket_recvfrom_ipv4_missing_port_arg.phpt new file mode 100644 index 0000000000000..2c5ed4068850e --- /dev/null +++ b/ext/sockets/tests/socket_recvfrom_ipv4_missing_port_arg.phpt @@ -0,0 +1,17 @@ +--TEST-- +socket_recvfrom() with IPv4 socket missing port argument +--EXTENSIONS-- +sockets +--FILE-- +getMessage(), PHP_EOL; +} + +?> +--EXPECT-- +ArgumentCountError: Wrong parameter count for socket_recvfrom() diff --git a/ext/sockets/tests/socket_recvfrom_ipv6_missing_port_arg.phpt b/ext/sockets/tests/socket_recvfrom_ipv6_missing_port_arg.phpt new file mode 100644 index 0000000000000..b01f768a30395 --- /dev/null +++ b/ext/sockets/tests/socket_recvfrom_ipv6_missing_port_arg.phpt @@ -0,0 +1,17 @@ +--TEST-- +socket_recvfrom() with IPv6 socket missing port argument +--EXTENSIONS-- +sockets +--FILE-- +getMessage(), PHP_EOL; +} + +?> +--EXPECT-- +ArgumentCountError: Wrong parameter count for socket_recvfrom() From d466fba13c994c3da13b463778a51439882b74f6 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Sun, 5 Oct 2025 13:11:19 +0100 Subject: [PATCH 2/2] ext/sockets: socket_recvfrom() improve error message when port argument is missing --- ext/sockets/sockets.c | 6 ++++-- .../tests/socket_recvfrom_ipv4_missing_port_arg.phpt | 2 +- .../tests/socket_recvfrom_ipv6_missing_port_arg.phpt | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/ext/sockets/sockets.c b/ext/sockets/sockets.c index f9001dc56164c..c314e87091352 100644 --- a/ext/sockets/sockets.c +++ b/ext/sockets/sockets.c @@ -1580,7 +1580,8 @@ PHP_FUNCTION(socket_recvfrom) if (arg6 == NULL) { zend_string_efree(recv_buf); - WRONG_PARAM_COUNT; + zend_argument_value_error(6, "must be specified when argument #1 ($socket) is of type AF_INET or AF_INET6"); + RETURN_THROWS(); } retval = recvfrom(php_sock->bsd_socket, ZSTR_VAL(recv_buf), arg3, arg4, (struct sockaddr *)&sin, (socklen_t *)&slen); @@ -1607,7 +1608,8 @@ PHP_FUNCTION(socket_recvfrom) if (arg6 == NULL) { zend_string_efree(recv_buf); - WRONG_PARAM_COUNT; + zend_argument_value_error(6, "must be specified when argument #1 ($socket) is of type AF_INET or AF_INET6"); + RETURN_THROWS(); } retval = recvfrom(php_sock->bsd_socket, ZSTR_VAL(recv_buf), arg3, arg4, (struct sockaddr *)&sin6, (socklen_t *)&slen); diff --git a/ext/sockets/tests/socket_recvfrom_ipv4_missing_port_arg.phpt b/ext/sockets/tests/socket_recvfrom_ipv4_missing_port_arg.phpt index 2c5ed4068850e..8d144a1005d99 100644 --- a/ext/sockets/tests/socket_recvfrom_ipv4_missing_port_arg.phpt +++ b/ext/sockets/tests/socket_recvfrom_ipv4_missing_port_arg.phpt @@ -14,4 +14,4 @@ try { ?> --EXPECT-- -ArgumentCountError: Wrong parameter count for socket_recvfrom() +ValueError: socket_recvfrom(): Argument #6 ($port) must be specified when argument #1 ($socket) is of type AF_INET or AF_INET6 diff --git a/ext/sockets/tests/socket_recvfrom_ipv6_missing_port_arg.phpt b/ext/sockets/tests/socket_recvfrom_ipv6_missing_port_arg.phpt index b01f768a30395..9c48c871c8535 100644 --- a/ext/sockets/tests/socket_recvfrom_ipv6_missing_port_arg.phpt +++ b/ext/sockets/tests/socket_recvfrom_ipv6_missing_port_arg.phpt @@ -14,4 +14,4 @@ try { ?> --EXPECT-- -ArgumentCountError: Wrong parameter count for socket_recvfrom() +ValueError: socket_recvfrom(): Argument #6 ($port) must be specified when argument #1 ($socket) is of type AF_INET or AF_INET6