From 56a3ceb6793c0d1f3dc9b91d0be735eb326386ef 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 | 21 +++++++++++++++++++ 2 files changed, 38 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..66ce0bf291874 --- /dev/null +++ b/ext/sockets/tests/socket_recvfrom_ipv6_missing_port_arg.phpt @@ -0,0 +1,21 @@ +--TEST-- +socket_recvfrom() with IPv6 socket missing port argument +--EXTENSIONS-- +sockets +--SKIPIF-- + +--FILE-- +getMessage(), PHP_EOL; +} + +?> +--EXPECT-- +ArgumentCountError: Wrong parameter count for socket_recvfrom() From 9cd7fcf9035f856e38430212b7a0cc022f1d6bc4 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 | 13 +++++++++++-- .../socket_recvfrom_ipv4_missing_port_arg.phpt | 2 +- .../socket_recvfrom_ipv6_missing_port_arg.phpt | 2 +- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/ext/sockets/sockets.c b/ext/sockets/sockets.c index f9001dc56164c..4a9332498c3cc 100644 --- a/ext/sockets/sockets.c +++ b/ext/sockets/sockets.c @@ -18,6 +18,7 @@ +----------------------------------------------------------------------+ */ +#include "zend_exceptions.h" #ifdef HAVE_CONFIG_H #include #endif @@ -1580,7 +1581,11 @@ PHP_FUNCTION(socket_recvfrom) if (arg6 == NULL) { zend_string_efree(recv_buf); - WRONG_PARAM_COUNT; + zend_throw_exception( + zend_ce_argument_count_error, + "socket_recvfrom() expects exactly 6 arguments when argument #1 ($socket) is of type AF_INET or AF_INET6", + 0); + RETURN_THROWS(); } retval = recvfrom(php_sock->bsd_socket, ZSTR_VAL(recv_buf), arg3, arg4, (struct sockaddr *)&sin, (socklen_t *)&slen); @@ -1607,7 +1612,11 @@ PHP_FUNCTION(socket_recvfrom) if (arg6 == NULL) { zend_string_efree(recv_buf); - WRONG_PARAM_COUNT; + zend_throw_exception( + zend_ce_argument_count_error, + "socket_recvfrom() expects exactly 6 arguments when argument #1 ($socket) is of type AF_INET or AF_INET6", + 0); + 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..0554818fb67c8 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() +ArgumentCountError: socket_recvfrom() expects exactly 6 arguments 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 66ce0bf291874..957751a949763 100644 --- a/ext/sockets/tests/socket_recvfrom_ipv6_missing_port_arg.phpt +++ b/ext/sockets/tests/socket_recvfrom_ipv6_missing_port_arg.phpt @@ -18,4 +18,4 @@ try { ?> --EXPECT-- -ArgumentCountError: Wrong parameter count for socket_recvfrom() +ArgumentCountError: socket_recvfrom() expects exactly 6 arguments when argument #1 ($socket) is of type AF_INET or AF_INET6