From 977f328b2cb686886fcdb132f00ea5895c31e7fc Mon Sep 17 00:00:00 2001 From: Alexander Ebert Date: Wed, 12 Mar 2014 17:03:05 +0100 Subject: [PATCH] DateUtil::checkDate() now validates all ISO dates Fixes #1677 --- wcfsetup/install/files/lib/util/DateUtil.class.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/wcfsetup/install/files/lib/util/DateUtil.class.php b/wcfsetup/install/files/lib/util/DateUtil.class.php index 496e58a1be..ce6acfd2e7 100644 --- a/wcfsetup/install/files/lib/util/DateUtil.class.php +++ b/wcfsetup/install/files/lib/util/DateUtil.class.php @@ -357,6 +357,12 @@ final class DateUtil { * @param string $date */ public static function validateDate($date) { + if (preg_match('~^(?[0-9]{4})-(?[0-9]{2})-(?[0-9]{2})~', $date, $matches)) { + return checkdate($matches['month'], $matches['day'], $matches['year']); + } + + return false; + // matches almost any valid date between year 2000 and 2038 if (!preg_match('~^(20[0-2][0-9]|203[0-8])\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$~', $date)) { throw new SystemException("date '".$date."' is invalid, violating ISO-8601 date format."); -- 2.20.1