Skip to content

Commit 3ec94cd

Browse files
committed
ext/sockets: socket_sendto check port range.
1 parent 7896276 commit 3ec94cd

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

ext/sockets/sockets.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1586,6 +1586,12 @@ PHP_FUNCTION(socket_sendto)
15861586
php_sock = Z_SOCKET_P(arg1);
15871587
ENSURE_SOCKET_VALID(php_sock);
15881588

1589+
if (port < 0 || port > USHRT_MAX) {
1590+
zend_argument_value_error(6, "must be between 0 and %u", USHRT_MAX);
1591+
RETURN_THROWS();
1592+
}
1593+
1594+
15891595
if (len < 0) {
15901596
zend_argument_value_error(3, "must be greater than or equal to 0");
15911597
RETURN_THROWS();
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
--TEST--
2+
socket_sendto() with invalid port
3+
--EXTENSIONS--
4+
sockets
5+
--FILE--
6+
<?php
7+
$s_c = socket_create_listen(0);
8+
try {
9+
$s_w = socket_sendto($s_c, "foo", 0, MSG_OOB, '127.0.0.1', 65536);
10+
} catch (\ValueError $e) {
11+
echo $e->getMessage() . \PHP_EOL;
12+
}
13+
try {
14+
$s_w = socket_sendto($s_c, "foo", 0, MSG_OOB, '127.0.0.1', -1);
15+
} catch (\ValueError $e) {
16+
echo $e->getMessage() . \PHP_EOL;
17+
}
18+
socket_close($s_c);
19+
?>
20+
--EXPECT--
21+
socket_sendto(): Argument #6 ($port) must be between 0 and 65535
22+
socket_sendto(): Argument #6 ($port) must be between 0 and 65535

0 commit comments

Comments
 (0)