summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerick Rethans <github@derickrethans.nl>2013-01-06 15:07:13 +0000
committerDerick Rethans <github@derickrethans.nl>2013-01-06 15:07:13 +0000
commitba35ae32b7e9858e6590a616c4d5c2f0020cc7ab (patch)
tree608594c94cfd37bf4489fc3ea9e004ab81855940
parentd7da1aa694a9a29ca7ec772e5d51d96b6dc8dda0 (diff)
parentff9c1b12ff9c9533367d0d6200eb39189ad0124c (diff)
downloadphp-git-ba35ae32b7e9858e6590a616c4d5c2f0020cc7ab.tar.gz
Merge branch 'PHP-5.3' into PHP-5.4
-rw-r--r--ext/date/php_date.c6
-rw-r--r--ext/date/tests/bug55397.phpt11
2 files changed, 16 insertions, 1 deletions
diff --git a/ext/date/php_date.c b/ext/date/php_date.c
index 765b0bfe7b..fd6453f5d8 100644
--- a/ext/date/php_date.c
+++ b/ext/date/php_date.c
@@ -2045,7 +2045,11 @@ static int date_object_compare_date(zval *d1, zval *d2 TSRMLS_DC)
instanceof_function(Z_OBJCE_P(d2), date_ce_date TSRMLS_CC)) {
php_date_obj *o1 = zend_object_store_get_object(d1 TSRMLS_CC);
php_date_obj *o2 = zend_object_store_get_object(d2 TSRMLS_CC);
-
+
+ if (!o1->time || !o2->time) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Trying to compare an incomplete DateTime object");
+ return 1;
+ }
if (!o1->time->sse_uptodate) {
timelib_update_ts(o1->time, o1->time->tz_info);
}
diff --git a/ext/date/tests/bug55397.phpt b/ext/date/tests/bug55397.phpt
new file mode 100644
index 0000000000..efc09b5047
--- /dev/null
+++ b/ext/date/tests/bug55397.phpt
@@ -0,0 +1,11 @@
+--TEST--
+Bug #55397 (comparsion of incomplete DateTime causes SIGSEGV)
+--INI--
+--FILE--
+<?php
+date_default_timezone_set('Europe/Prague');
+var_dump(unserialize('O:8:"DateTime":0:{}') == new DateTime);
+?>
+--EXPECTF--
+Warning: %s: Trying to compare an incomplete DateTime object in %s on line %d
+bool(false)