]> granicus.if.org Git - php/commitdiff
- Fixed bug #73426: createFromFormat with 'z' format char results in incorrect time.
authorDerick Rethans <github@derickrethans.nl>
Mon, 31 Oct 2016 10:43:33 +0000 (10:43 +0000)
committerDerick Rethans <github@derickrethans.nl>
Mon, 31 Oct 2016 10:43:33 +0000 (10:43 +0000)
NEWS
ext/date/lib/tm2unixtime.c
ext/date/tests/bug73426.phpt [new file with mode: 0644]

diff --git a/NEWS b/NEWS
index cc381e60a342585b2fc256982804b3fb8b0e5e6b..bc9945ff64e36d33f8f13b802fb46c1642087200 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -6,14 +6,18 @@ PHP                                                                        NEWS
   . Fixded bug #72736 (Slow performance when fetching large dataset with mysqli
     / PDO). (Dmitry)
 
-- PCRE:
-  . Fixed bug #73392 (A use-after-free in zend allocator management). 
-    (Laruence)
+- Date:
+  . Fixed bug #73426 (createFromFormat with 'z' format char results in
+    incorrect time). (Derick)
 
 - JSON:
   . Introduced encoder struct instead of global which fixes bugs #66025 and
     #73254 related to pretty print indentation. (Jakub Zelenka)
 
+- PCRE:
+  . Fixed bug #73392 (A use-after-free in zend allocator management). 
+    (Laruence)
+
 27 Oct 2016, PHP 7.1.0RC5
 
 - Core:
index 0d65006de4a182a068102752860e7c0444cd417b..d89d6e635de7ddb9f0e16986b985a46515d24cd0 100644 (file)
@@ -204,7 +204,7 @@ void timelib_do_rel_normalize(timelib_time *base, timelib_rel_time *rt)
 
 void timelib_do_normalize(timelib_time* time)
 {
-       if (time->s != TIMELIB_UNSET) do_range_limit_fraction(&time->f, &time->s);
+       if (time->f != TIMELIB_UNSET) do_range_limit_fraction(&time->f, &time->s);
        if (time->s != TIMELIB_UNSET) do_range_limit(0, 60, 60, &time->s, &time->i);
        if (time->s != TIMELIB_UNSET) do_range_limit(0, 60, 60, &time->i, &time->h);
        if (time->s != TIMELIB_UNSET) do_range_limit(0, 24, 24, &time->h, &time->d);
diff --git a/ext/date/tests/bug73426.phpt b/ext/date/tests/bug73426.phpt
new file mode 100644 (file)
index 0000000..c2a700a
--- /dev/null
@@ -0,0 +1,32 @@
+--TEST--
+Bug #73426 (createFromFormat with 'z' format char results in incorrect time)
+--INI--
+date.timezone=UTC
+--FILE--
+<?php
+$date = '12:00:00 15';
+$format = 'H:i:s z';
+var_dump(DateTime::createFromFormat($format, $date));
+
+$date = '16 12:00:00';
+$format = 'z H:i:s';
+var_dump(DateTime::createFromFormat($format, $date));
+
+?>
+--EXPECTF--
+object(DateTime)#%d (%d) {
+  ["date"]=>
+  string(26) "2016-01-16 12:00:00.000000"
+  ["timezone_type"]=>
+  int(3)
+  ["timezone"]=>
+  string(3) "UTC"
+}
+object(DateTime)#%d (%d) {
+  ["date"]=>
+  string(26) "2016-01-17 12:00:00.000000"
+  ["timezone_type"]=>
+  int(3)
+  ["timezone"]=>
+  string(3) "UTC"
+}