diff options
author | Ignace Nyamagana Butera <nyamsprod@gmail.com> | 2019-03-25 20:30:02 +0100 |
---|---|---|
committer | Derick Rethans <github@derickrethans.nl> | 2019-04-17 09:39:03 +0100 |
commit | 7b1a4e24008f34a76c343ece735953ad5124e09f (patch) | |
tree | cdd5479d78bf8e89a178be8d0a25283b7cfabb97 | |
parent | 6fe75f9e45be60262bfe7e6bb92de445fe41c483 (diff) | |
download | php-git-7b1a4e24008f34a76c343ece735953ad5124e09f.tar.gz |
Fixed bug #77909: DatePeriod::__construct() with invalid recurrence count value
Improve error message on invalid reccurence count
Adding test when reccurence is -1
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | ext/date/php_date.c | 4 | ||||
-rw-r--r-- | ext/date/tests/DatePeriod_wrong_recurrence_on_constructor.phpt | 19 |
3 files changed, 27 insertions, 0 deletions
@@ -9,6 +9,10 @@ PHP NEWS . Fixed bug #77794 (Incorrect Date header format in built-in server). (kelunik) +- Date: + . Fixed bug #77909 (DatePeriod::__construct() with invalid recurrence count + value). (Ignace Nyamagana Butera) + - Interbase: . Fixed bug #72175 (Impossibility of creating multiple connections to Interbase with php 7.x). (Nikita) diff --git a/ext/date/php_date.c b/ext/date/php_date.c index 9b37a9e3c1..f47ba5bc54 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -4645,6 +4645,10 @@ PHP_METHOD(DatePeriod, __construct) dpobj->end = clone; } } + + if (dpobj->end == NULL && recurrences < 1) { + php_error_docref(NULL, E_WARNING, "The recurrence count '%d' is invalid. Needs to be > 0", (int) recurrences); + } /* options */ dpobj->include_start_date = !(options & PHP_DATE_PERIOD_EXCLUDE_START_DATE); diff --git a/ext/date/tests/DatePeriod_wrong_recurrence_on_constructor.phpt b/ext/date/tests/DatePeriod_wrong_recurrence_on_constructor.phpt new file mode 100644 index 0000000000..715ea63dc9 --- /dev/null +++ b/ext/date/tests/DatePeriod_wrong_recurrence_on_constructor.phpt @@ -0,0 +1,19 @@ +--TEST-- +DatePeriod: Test wrong recurrence parameter on __construct +--FILE-- +<?php +try { + new DatePeriod(new DateTime('yesterday'), new DateInterval('P1D'), 0); +} catch (Exception $exception) { + echo $exception->getMessage(), "\n"; +} + +try { + new DatePeriod(new DateTime('yesterday'), new DateInterval('P1D'),-1); +} catch (Exception $exception) { + echo $exception->getMessage(), "\n"; +} +?> +--EXPECTF-- +DatePeriod::__construct(): The recurrence count '0' is invalid. Needs to be > 0 +DatePeriod::__construct(): The recurrence count '-1' is invalid. Needs to be > 0 |