summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStanislav Malyshev <stas@php.net>2014-04-13 15:54:26 -0700
committerStanislav Malyshev <stas@php.net>2014-04-13 15:55:07 -0700
commit733b09442d40ae2803ca1ffd073a74ca4a8ebb07 (patch)
tree0f88c2ccd3822223da6a306411231d74555f972c
parentc5275b4a92fb9689d8d26112a9c3f91def201d35 (diff)
parent8c88b6e81c4565b0102a9022d647817845f0c18d (diff)
downloadphp-git-733b09442d40ae2803ca1ffd073a74ca4a8ebb07.tar.gz
Merge branch 'PHP-5.4' into PHP-5.5
* PHP-5.4: Fix bug #66721
-rw-r--r--NEWS4
-rw-r--r--ext/date/php_date.c4
-rw-r--r--ext/date/tests/bug66721.phpt11
3 files changed, 19 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index 988408154c..67c7b54891 100644
--- a/NEWS
+++ b/NEWS
@@ -11,6 +11,10 @@ PHP NEWS
height). (Gabor Buella)
. Fixed bug #67043 (substr_compare broke by previous change) (Tjerk)
+- Date:
+ . Fixed bug #66721 (__wakeup of DateTime segfaults when invalid object data is
+ supplied). (Boro Sitnikovski)
+
- Embed:
. Fixed bug #65715 (php5embed.lib isn't provided anymore). (Anatol).
diff --git a/ext/date/php_date.c b/ext/date/php_date.c
index f6b12bc42e..deb284ef87 100644
--- a/ext/date/php_date.c
+++ b/ext/date/php_date.c
@@ -2781,6 +2781,10 @@ static int php_date_initialize_from_hash(zval **return_value, php_date_obj **dat
tzi = php_date_parse_tzfile(Z_STRVAL_PP(z_timezone), DATE_TIMEZONEDB TSRMLS_CC);
+ if (tzi == NULL) {
+ return 0;
+ }
+
ALLOC_INIT_ZVAL(tmp_obj);
tzobj = zend_object_store_get_object(php_date_instantiate(date_ce_timezone, tmp_obj TSRMLS_CC) TSRMLS_CC);
tzobj->type = TIMELIB_ZONETYPE_ID;
diff --git a/ext/date/tests/bug66721.phpt b/ext/date/tests/bug66721.phpt
new file mode 100644
index 0000000000..4806712437
--- /dev/null
+++ b/ext/date/tests/bug66721.phpt
@@ -0,0 +1,11 @@
+--TEST--
+Test for bug #66721: __wakeup of DateTime segfaults when invalid object data is supplied
+--CREDITS--
+Boro Sitnikovski <buritomath@yahoo.com>
+--FILE--
+<?php
+$y = 'O:8:"DateTime":3:{s:4:"date";s:19:"2014-02-15 02:00:51";s:13:"timezone_type";i:3;s:8:"timezone";s:10:"1234567890";}';
+var_dump(unserialize($y));
+?>
+--EXPECTF--
+Fatal error: Invalid serialization data for DateTime object in %s on line %d