mirror of
https://github.com/php/php-src.git
synced 2024-09-22 10:27:25 +00:00
- Added tests and NEWS for r306475; see bug #55797.
- Removed now redundant previous overflow check, which relied on undefined behavior (wraparound) and was ignored in optimized builds.
This commit is contained in:
parent
38d485ca41
commit
5ae7564890
@ -153,10 +153,6 @@ void SdnToGregorian(
|
||||
}
|
||||
temp = (sdn + GREGOR_SDN_OFFSET) * 4 - 1;
|
||||
|
||||
if (temp < 0) {
|
||||
goto fail;
|
||||
}
|
||||
|
||||
/* Calculate the century (year/100). */
|
||||
century = temp / DAYS_PER_400_YEARS;
|
||||
|
||||
|
36
ext/calendar/tests/bug55797_1.phpt
Normal file
36
ext/calendar/tests/bug55797_1.phpt
Normal file
@ -0,0 +1,36 @@
|
||||
--TEST--
|
||||
Bug #55797: Integer overflow in SdnToGregorian leads to segfault (in optimized builds)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
include 'skipif.inc';
|
||||
if (PHP_INT_SIZE != 4) {
|
||||
die("skip this test is for 32bit platform only");
|
||||
}
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
$x = 882858030;
|
||||
|
||||
var_dump(cal_from_jd($x, CAL_GREGORIAN));
|
||||
--EXPECTF--
|
||||
array(9) {
|
||||
["date"]=>
|
||||
string(5) "0/0/0"
|
||||
["month"]=>
|
||||
int(0)
|
||||
["day"]=>
|
||||
int(0)
|
||||
["year"]=>
|
||||
int(0)
|
||||
["dow"]=>
|
||||
int(%d)
|
||||
["abbrevdayname"]=>
|
||||
string(%d) "%s"
|
||||
["dayname"]=>
|
||||
string(%d) "%s"
|
||||
["abbrevmonth"]=>
|
||||
string(0) ""
|
||||
["monthname"]=>
|
||||
string(0) ""
|
||||
}
|
||||
|
36
ext/calendar/tests/bug55797_2.phpt
Normal file
36
ext/calendar/tests/bug55797_2.phpt
Normal file
@ -0,0 +1,36 @@
|
||||
--TEST--
|
||||
Bug #55797: Integer overflow in SdnToGregorian leads to segfault (in optimized builds)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
include 'skipif.inc';
|
||||
if (PHP_INT_SIZE == 4) {
|
||||
die("skip this test is for 64bit platform only");
|
||||
}
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
$x = 9223372036854743639;
|
||||
|
||||
var_dump(cal_from_jd($x, CAL_GREGORIAN));
|
||||
--EXPECTF--
|
||||
array(9) {
|
||||
["date"]=>
|
||||
string(5) "0/0/0"
|
||||
["month"]=>
|
||||
int(0)
|
||||
["day"]=>
|
||||
int(0)
|
||||
["year"]=>
|
||||
int(0)
|
||||
["dow"]=>
|
||||
int(%d)
|
||||
["abbrevdayname"]=>
|
||||
string(%d) "%s"
|
||||
["dayname"]=>
|
||||
string(%d) "%s"
|
||||
["abbrevmonth"]=>
|
||||
string(0) ""
|
||||
["monthname"]=>
|
||||
string(0) ""
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user