File tree Expand file tree Collapse file tree 3 files changed +24
-2
lines changed Expand file tree Collapse file tree 3 files changed +24
-2
lines changed Original file line number Diff line number Diff line change @@ -65,6 +65,10 @@ PHP NEWS
65
65
. Fixed bug GH-15902 (Core dumped in ext/reflection/php_reflection.c).
66
66
(DanielEScherzer)
67
67
68
+ - Sockets:
69
+ . Fixed bug GH-17921 (socket_read/socket_recv overflow on buffer size).
70
+ (David Carlier)
71
+
68
72
- Standard:
69
73
. Fixed bug #72666 (stat cache clearing inconsistent between file:// paths
70
74
and plain paths). (Jakub Zelenka)
Original file line number Diff line number Diff line change @@ -884,7 +884,7 @@ PHP_FUNCTION(socket_read)
884
884
ENSURE_SOCKET_VALID (php_sock );
885
885
886
886
/* overflow check */
887
- if (( length + 1 ) < 2 ) {
887
+ if (length <= 0 || length == ZEND_LONG_MAX ) {
888
888
RETURN_FALSE ;
889
889
}
890
890
@@ -1326,7 +1326,7 @@ PHP_FUNCTION(socket_recv)
1326
1326
ENSURE_SOCKET_VALID (php_sock );
1327
1327
1328
1328
/* overflow check */
1329
- if (( len + 1 ) < 2 ) {
1329
+ if (len <= 0 || len == ZEND_LONG_MAX ) {
1330
1330
RETURN_FALSE ;
1331
1331
}
1332
1332
Original file line number Diff line number Diff line change
1
+ --TEST--
2
+ GH-16267 - overflow on socket_strerror argument
3
+ --EXTENSIONS--
4
+ sockets
5
+ --FILE--
6
+ <?php
7
+ $ s_c_l = socket_create_listen (0 );
8
+ var_dump (socket_read ($ s_c_l , PHP_INT_MAX ));
9
+ var_dump (socket_read ($ s_c_l , PHP_INT_MIN ));
10
+ $ a = "" ;
11
+ var_dump (socket_recv ($ s_c_l , $ a , PHP_INT_MAX , 0 ));
12
+ var_dump (socket_recv ($ s_c_l , $ a , PHP_INT_MIN , 0 ));
13
+ ?>
14
+ --EXPECT--
15
+ bool(false)
16
+ bool(false)
17
+ bool(false)
18
+ bool(false)
You can’t perform that action at this time.
0 commit comments