From fd1c3660ca9574b55f7d2657c5f47e0d3b6d8f29 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Sun, 5 Oct 2025 13:11:19 +0100 Subject: [PATCH] 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 f9001dc5616..4a9332498c3 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 2c5ed406885..0554818fb67 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 66ce0bf2918..957751a9497 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