From 494615fcb8c1fb5984e0e7d666e51a2dfc6bee55 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Thu, 30 Jan 2020 12:16:43 +0100 Subject: Fix leak in DateTimeImmutable::modify() --- ext/date/php_date.c | 1 + ext/date/tests/DateTimeImmutable_modify_invalid_format.phpt | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 ext/date/tests/DateTimeImmutable_modify_invalid_format.phpt diff --git a/ext/date/php_date.c b/ext/date/php_date.c index 785c1b222e..bec60aab6d 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -3297,6 +3297,7 @@ PHP_METHOD(DateTimeImmutable, modify) date_clone_immutable(object, &new_object); if (!php_date_modify(&new_object, modify, modify_len)) { + zval_ptr_dtor(&new_object); RETURN_FALSE; } diff --git a/ext/date/tests/DateTimeImmutable_modify_invalid_format.phpt b/ext/date/tests/DateTimeImmutable_modify_invalid_format.phpt new file mode 100644 index 0000000000..3386f725ac --- /dev/null +++ b/ext/date/tests/DateTimeImmutable_modify_invalid_format.phpt @@ -0,0 +1,12 @@ +--TEST-- +DateTimeImmutable::modify() with invalid format +--FILE-- +modify('')); + +?> +--EXPECTF-- +Warning: DateTimeImmutable::modify(): Failed to parse time string () at position 0 ( in %s on line %d +bool(false) -- cgit v1.2.1