]> granicus.if.org Git - php/commitdiff
Fix #80007: Potential type confusion in unixtojd() parameter parsing
authorAndy Postnikov <apostnikov@gmail.com>
Fri, 21 Aug 2020 23:44:48 +0000 (02:44 +0300)
committerChristoph M. Becker <cmbecker69@gmx.de>
Sat, 22 Aug 2020 10:30:04 +0000 (12:30 +0200)
Also it fixes test on 32-bit armv7 and x86
- Test unixtojd() function : error conditions [ext/calendar/tests/unixtojd_error1.phpt]

Closes GH-6033

NEWS
ext/calendar/cal_unix.c

diff --git a/NEWS b/NEWS
index 4748996c26c8368db5f7fe7ffca31bd84f2c4db6..49ac4c5a6996649abb2878a5e7315f62e4f560d3 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,9 @@ PHP                                                                        NEWS
 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 ?? ??? ????, PHP 7.3.23
 
+- Calendar:
+  . Fixed bug #80007 (Potential type confusion in unixtojd() parameter parsing).
+    (Andy Postnikov)
 
 03 Sep 2020, PHP 7.3.22
 
index a8e81eb5414b83e9ccbeec3ca42458cd7ec342dd..da6a184e6c17a6035fb47c6641568417812f35d0 100644 (file)
 PHP_FUNCTION(unixtojd)
 {
        time_t ts = 0;
+       zend_long tl = 0;
        struct tm *ta, tmbuf;
 
-       if (zend_parse_parameters(ZEND_NUM_ARGS(), "|l", &ts) == FAILURE) {
+       if (zend_parse_parameters(ZEND_NUM_ARGS(), "|l", &tl) == FAILURE) {
                return;
        }
 
-       if (!ts) {
+       if (!tl) {
                ts = time(NULL);
-       } else if (ts < 0) {
+       } else if (tl >= 0) {
+               ts = (time_t) tl;
+       } else {
                RETURN_FALSE;
        }