]> granicus.if.org Git - php/commitdiff
MFH: Fixed bug #48678 (DateInterval segfaults when unserialising (Ilia)
authorJohannes Schlüter <johannes@php.net>
Thu, 25 Jun 2009 15:07:36 +0000 (15:07 +0000)
committerJohannes Schlüter <johannes@php.net>
Thu, 25 Jun 2009 15:07:36 +0000 (15:07 +0000)
ext/date/php_date.c
ext/date/tests/bug48678.phpt [new file with mode: 0644]

index 230f1a5b0cf6d37e236785febcfa6348b57076d6..f55115be21fef77efed90b869ee4b68edf965010 100644 (file)
@@ -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 (file)
index 0000000..bf34941
--- /dev/null
@@ -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
+)