summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Pena <felipe@php.net>2011-03-23 01:22:18 +0000
committerFelipe Pena <felipe@php.net>2011-03-23 01:22:18 +0000
commit5b85234b378668d8ccb5101bde3c3a1a3ca9d238 (patch)
tree21f9361aa48772c7c5b478895d6b20b2c6697026
parent660aa6701d1b32e64e8b6c40603b18b92d4806c4 (diff)
downloadphp-git-5b85234b378668d8ccb5101bde3c3a1a3ca9d238.tar.gz
- Fixed bug #54283 (new DatePeriod(NULL) causes crash)
-rw-r--r--NEWS1
-rw-r--r--ext/date/php_date.c2
-rw-r--r--ext/date/tests/bug54283.phpt14
3 files changed, 16 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index 5c67a49096..5d0c05338e 100644
--- a/NEWS
+++ b/NEWS
@@ -13,6 +13,7 @@ PHP NEWS
. Fixed bug #54340 (DateTime::add() method bug). (Adam)
. Fixed bug #54316 (DateTime::createFromFormat does not handle trailing '|'
correctly). (Adam)
+ . Fixed bug #54283 (new DatePeriod(NULL) causes crash). (Felipe)
- DBA extension:
. Fixed bug #54242 (dba_insert returns true if key already exists). (Felipe)
diff --git a/ext/date/php_date.c b/ext/date/php_date.c
index 31470a5eec..01e3c3318f 100644
--- a/ext/date/php_date.c
+++ b/ext/date/php_date.c
@@ -3767,7 +3767,7 @@ PHP_METHOD(DatePeriod, __construct)
dpobj = zend_object_store_get_object(getThis() TSRMLS_CC);
dpobj->current = NULL;
- if (isostr_len) {
+ if (isostr) {
date_period_initialize(&(dpobj->start), &(dpobj->end), &(dpobj->interval), &recurrences, isostr, isostr_len TSRMLS_CC);
if (dpobj->start == NULL) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "The ISO interval '%s' did not contain a start date.", isostr);
diff --git a/ext/date/tests/bug54283.phpt b/ext/date/tests/bug54283.phpt
new file mode 100644
index 0000000000..780d0fa762
--- /dev/null
+++ b/ext/date/tests/bug54283.phpt
@@ -0,0 +1,14 @@
+--TEST--
+Bug #54283 (new DatePeriod(NULL) causes crash)
+--FILE--
+<?php
+
+try {
+ var_dump(new DatePeriod(NULL));
+} catch (Exception $e) {
+ var_dump($e->getMessage());
+}
+
+?>
+--EXPECTF--
+string(51) "DatePeriod::__construct(): Unknown or bad format ()"