diff options
author | Gustavo André dos Santos Lopes <cataphract@php.net> | 2011-09-27 10:57:25 +0000 |
---|---|---|
committer | Gustavo André dos Santos Lopes <cataphract@php.net> | 2011-09-27 10:57:25 +0000 |
commit | 5ae756489015560ca9586c42f4b43316bb1e4a63 (patch) | |
tree | bf11198a6364dd44a8307ee8c8669ba57661a8e1 /ext/calendar/tests | |
parent | 38d485ca412d8c59bca88074f6e40aff2a80385f (diff) | |
download | php-git-5ae756489015560ca9586c42f4b43316bb1e4a63.tar.gz |
- 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.
Diffstat (limited to 'ext/calendar/tests')
-rw-r--r-- | ext/calendar/tests/bug55797_1.phpt | 36 | ||||
-rw-r--r-- | ext/calendar/tests/bug55797_2.phpt | 36 |
2 files changed, 72 insertions, 0 deletions
diff --git a/ext/calendar/tests/bug55797_1.phpt b/ext/calendar/tests/bug55797_1.phpt new file mode 100644 index 0000000000..ffd617dfb7 --- /dev/null +++ b/ext/calendar/tests/bug55797_1.phpt @@ -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) "" +} + diff --git a/ext/calendar/tests/bug55797_2.phpt b/ext/calendar/tests/bug55797_2.phpt new file mode 100644 index 0000000000..2a9183dd8d --- /dev/null +++ b/ext/calendar/tests/bug55797_2.phpt @@ -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) "" +} + |