mirror of
https://github.com/php/php-src.git
synced 2025-01-26 21:54:16 +08: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
d25f2d4e06
commit
74cc4c8cc6
4
NEWS
4
NEWS
@ -26,6 +26,10 @@ PHP NEWS
|
||||
(Hannes)
|
||||
. Fixed bug #50982 (incorrect assumption of PAGE_SIZE size). (Dmitry)
|
||||
|
||||
- Calendar:
|
||||
. Fixed bug #55797 (Integer overflow in SdnToGregorian leads to segfault (in
|
||||
optimized builds). (Gustavo)
|
||||
|
||||
- Curl:
|
||||
. Fixed bug #54798 (Segfault when CURLOPT_STDERR file pointer is closed
|
||||
before calling curl_exec). (Hannes)
|
||||
|
@ -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