File tree 3 files changed +14
-10
lines changed
3 files changed +14
-10
lines changed Original file line number Diff line number Diff line change @@ -14,6 +14,10 @@ PHP NEWS
14
14
- SimpleXML:
15
15
. Fixed bug GH-17040 (SimpleXML's unset can break DOM objects). (nielsdos)
16
16
17
+ - Sockets:
18
+ . Fixed bug GH-16276 (socket_strerror overflow handling with INT_MIN).
19
+ (David Carlier / cmb)
20
+
17
21
- Streams:
18
22
. Fixed bug GH-17037 (UAF in user filter when adding existing filter name due
19
23
to incorrect error handling). (nielsdos)
Original file line number Diff line number Diff line change @@ -354,7 +354,11 @@ char *sockets_strerror(int error) /* {{{ */
354
354
355
355
#ifndef PHP_WIN32
356
356
if (error < -10000 ) {
357
- error = - error - 10000 ;
357
+ if (error == INT_MIN ) {
358
+ error = 2147473648 ;
359
+ } else {
360
+ error = - error - 10000 ;
361
+ }
358
362
359
363
#ifdef HAVE_HSTRERROR
360
364
buf = hstrerror (error );
Original file line number Diff line number Diff line change @@ -3,20 +3,16 @@ GH-16267 - overflow on socket_strerror argument
3
3
--EXTENSIONS--
4
4
sockets
5
5
--SKIPIF--
6
- <?php if (PHP_INT_SIZE != 8 ) die (' skip 64-bit only ' ); ?>
6
+ <?php if (PHP_INT_SIZE != 8 ) die (" skip this test is for 64bit platform only " ); ?>
7
7
--FILE--
8
8
<?php
9
+ var_dump (socket_strerror (-2147483648 ));
9
10
try {
10
- socket_strerror (PHP_INT_MIN );
11
- } catch (\ValueError $ e ) {
12
- echo $ e ->getMessage () . PHP_EOL ;
13
- }
14
- try {
15
- socket_strerror (PHP_INT_MAX );
11
+ socket_strerror (2147483648 );
16
12
} catch (\ValueError $ e ) {
17
13
echo $ e ->getMessage () . PHP_EOL ;
18
14
}
19
15
?>
20
16
--EXPECTF--
21
- socket_strerror(): Argument #1 ($error_code) must be between %s and %s
22
- socket_strerror(): Argument #1 ($error_code) must be between %s and %s
17
+ string(%d) "%S"
18
+ socket_strerror(): Argument #1 ($error_code) must be between %i and %d
You can’t perform that action at this time.
0 commit comments