Skip to content

Commit ce4eb89

Browse files
committed
Merge branch 'PHP-7.1' into PHP-7.2
* PHP-7.1: Validate length on socket_write
2 parents 77646d2 + ec2e7a2 commit ce4eb89

File tree

5 files changed

+55
-0
lines changed

5 files changed

+55
-0
lines changed

NEWS

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ PHP NEWS
2020
. Fixed bug #76348 (WSDL_CACHE_MEMORY causes Segmentation fault). (cmb)
2121
. Fixed bug #77141 (Signedness issue in SOAP when precision=-1). (cmb)
2222

23+
- Sockets:
24+
. Fixed bug #67619 (Validate length on socket_write). (thiagooak)
25+
2326
08 Nov 2018, PHP 7.2.12
2427

2528
- Core:

ext/sockets/sockets.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1175,6 +1175,11 @@ PHP_FUNCTION(socket_write)
11751175
return;
11761176
}
11771177

1178+
if (length < 0) {
1179+
php_error_docref(NULL, E_WARNING, "Length cannot be negative");
1180+
RETURN_FALSE;
1181+
}
1182+
11781183
if ((php_sock = (php_socket *)zend_fetch_resource(Z_RES_P(arg1), le_socket_name, le_socket)) == NULL) {
11791184
RETURN_FALSE;
11801185
}
@@ -1717,6 +1722,11 @@ PHP_FUNCTION(socket_send)
17171722
return;
17181723
}
17191724

1725+
if (len < 0) {
1726+
php_error_docref(NULL, E_WARNING, "Length cannot be negative");
1727+
RETURN_FALSE;
1728+
}
1729+
17201730
if ((php_sock = (php_socket *)zend_fetch_resource(Z_RES_P(arg1), le_socket_name, le_socket)) == NULL) {
17211731
RETURN_FALSE;
17221732
}
@@ -1879,6 +1889,11 @@ PHP_FUNCTION(socket_sendto)
18791889
return;
18801890
}
18811891

1892+
if (len < 0) {
1893+
php_error_docref(NULL, E_WARNING, "Length cannot be negative");
1894+
RETURN_FALSE;
1895+
}
1896+
18821897
if ((php_sock = (php_socket *)zend_fetch_resource(Z_RES_P(arg1), le_socket_name, le_socket)) == NULL) {
18831898
RETURN_FALSE;
18841899
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
--TEST--
2+
ext/sockets - socket_send - test with incorrect parameters
3+
--SKIPIF--
4+
<?php
5+
if (!extension_loaded('sockets')) {
6+
die('skip sockets extension not available.');
7+
}
8+
?>
9+
--FILE--
10+
<?php
11+
$rand = rand(1,999);
12+
$s_c = socket_create_listen(31330+$rand);
13+
$s_w = socket_send($s_c, "foo", -1, MSG_OOB);
14+
socket_close($s_c);
15+
?>
16+
--EXPECTF--
17+
Warning: socket_send(): Length cannot be negative in %s on line %i
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
--TEST--
2+
ext/sockets - socket_sendto - test with incorrect parameters
3+
--SKIPIF--
4+
<?php
5+
if (!extension_loaded('sockets')) {
6+
die('skip sockets extension not available.');
7+
}
8+
?>
9+
--FILE--
10+
<?php
11+
$rand = rand(1,999);
12+
$s_c = socket_create_listen(31330+$rand);
13+
$s_w = socket_sendto($s_c, "foo", -1, MSG_OOB, '127.0.0.1');
14+
socket_close($s_c);
15+
?>
16+
--EXPECTF--
17+
Warning: socket_sendto(): Length cannot be negative in %s on line %i

ext/sockets/tests/socket_write_params.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ fa@php.net
1717
$s_c = socket_create_listen(31330+$rand);
1818
$s_w = socket_write($s_c);
1919
$s_w = socket_write($s_c, "foo");
20+
$s_w = socket_write($s_c, "foo", -1);
2021
socket_close($s_c);
2122
?>
2223
--EXPECTF--
@@ -25,3 +26,5 @@ Warning: socket_write() expects at least 2 parameters, 0 given in %s on line %i
2526
Warning: socket_write() expects at least 2 parameters, 1 given in %s on line %i
2627

2728
Warning: socket_write(): unable to write to socket [%i]: %a in %s on line %i
29+
30+
Warning: socket_write(): Length cannot be negative in %s on line %i

0 commit comments

Comments
 (0)