diff options
author | Johannes Schlüter <johannes@php.net> | 2009-06-25 15:07:36 +0000 |
---|---|---|
committer | Johannes Schlüter <johannes@php.net> | 2009-06-25 15:07:36 +0000 |
commit | 63543769246a323ddc011126830e2f03f55a39c7 (patch) | |
tree | 789ff2281cf46c513c6de46fb03987cea0cb1125 | |
parent | f03c5db12edd0dc527c6471feddfc3ccfbcc88eb (diff) | |
download | php-git-63543769246a323ddc011126830e2f03f55a39c7.tar.gz |
MFH: Fixed bug #48678 (DateInterval segfaults when unserialising (Ilia)
-rw-r--r-- | ext/date/php_date.c | 4 | ||||
-rw-r--r-- | ext/date/tests/bug48678.phpt | 31 |
2 files changed, 35 insertions, 0 deletions
diff --git a/ext/date/php_date.c b/ext/date/php_date.c index 230f1a5b0c..f55115be21 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -2213,6 +2213,10 @@ static HashTable *date_object_get_properties_interval(zval *object TSRMLS_DC) props = intervalobj->std.properties; + if (!intervalobj->initialized) { + return props; + } + #define PHP_DATE_INTERVAL_ADD_PROPERTY(n,f) \ MAKE_STD_ZVAL(zv); \ ZVAL_LONG(zv, intervalobj->diff->f); \ diff --git a/ext/date/tests/bug48678.phpt b/ext/date/tests/bug48678.phpt new file mode 100644 index 0000000000..bf349412ba --- /dev/null +++ b/ext/date/tests/bug48678.phpt @@ -0,0 +1,31 @@ +--TEST-- +Bug #48678 DateInterval segfaults when unserialising +--FILE-- +<?php +$x = new dateinterval("P3Y6M4DT12H30M5S"); +print_r($x); +$y = unserialize(serialize($x)); +print_r($y); +--EXPECT-- +DateInterval Object +( + [y] => 3 + [m] => 6 + [d] => 4 + [h] => 12 + [i] => 30 + [s] => 5 + [invert] => 0 + [days] => 0 +) +DateInterval Object +( + [y] => 3 + [m] => 6 + [d] => 4 + [h] => 12 + [i] => 30 + [s] => 5 + [invert] => 0 + [days] => 0 +) |