summaryrefslogtreecommitdiff
path: root/ext/calendar/tests
diff options
context:
space:
mode:
authorGustavo André dos Santos Lopes <cataphract@php.net>2011-09-27 10:57:25 +0000
committerGustavo André dos Santos Lopes <cataphract@php.net>2011-09-27 10:57:25 +0000
commit5ae756489015560ca9586c42f4b43316bb1e4a63 (patch)
treebf11198a6364dd44a8307ee8c8669ba57661a8e1 /ext/calendar/tests
parent38d485ca412d8c59bca88074f6e40aff2a80385f (diff)
downloadphp-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.phpt36
-rw-r--r--ext/calendar/tests/bug55797_2.phpt36
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) ""
+}
+