]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-7.1' into PHP-7.2
authorChristoph M. Becker <cmbecker69@gmx.de>
Sun, 11 Feb 2018 11:49:41 +0000 (12:49 +0100)
committerChristoph M. Becker <cmbecker69@gmx.de>
Sun, 11 Feb 2018 11:49:41 +0000 (12:49 +0100)
* PHP-7.1:
  Fix #75857: Timezone gets truncated when formatted

1  2 
NEWS
ext/date/php_date.c

diff --cc NEWS
Simple merge
index ca654674562bc63f32fe35f68e4389a59169c0d2,277736505dd782bff8be890c12d663a2f47f0853..092950a30645d5b92b60e8f340652cd39a5d88dc
@@@ -1169,22 -1167,22 +1169,22 @@@ static zend_string *date_format(char *f
                                }
                                /* Make sure to do this on a positive int to avoid rounding errors */
                                retval = (retval / 864)  % 1000;
-                               length = slprintf(buffer, 32, "%03d", retval);
+                               length = slprintf(buffer, sizeof(buffer), "%03d", retval);
                                break;
                        }
-                       case 'g': length = slprintf(buffer, 32, "%d", (t->h % 12) ? (int) t->h % 12 : 12); break;
-                       case 'G': length = slprintf(buffer, 32, "%d", (int) t->h); break;
-                       case 'h': length = slprintf(buffer, 32, "%02d", (t->h % 12) ? (int) t->h % 12 : 12); break;
-                       case 'H': length = slprintf(buffer, 32, "%02d", (int) t->h); break;
-                       case 'i': length = slprintf(buffer, 32, "%02d", (int) t->i); break;
-                       case 's': length = slprintf(buffer, 32, "%02d", (int) t->s); break;
-                       case 'u': length = slprintf(buffer, 32, "%06d", (int) floor(t->us)); break;
-                       case 'v': length = slprintf(buffer, 32, "%03d", (int) floor(t->us / 1000)); break;
+                       case 'g': length = slprintf(buffer, sizeof(buffer), "%d", (t->h % 12) ? (int) t->h % 12 : 12); break;
+                       case 'G': length = slprintf(buffer, sizeof(buffer), "%d", (int) t->h); break;
+                       case 'h': length = slprintf(buffer, sizeof(buffer), "%02d", (t->h % 12) ? (int) t->h % 12 : 12); break;
+                       case 'H': length = slprintf(buffer, sizeof(buffer), "%02d", (int) t->h); break;
+                       case 'i': length = slprintf(buffer, sizeof(buffer), "%02d", (int) t->i); break;
+                       case 's': length = slprintf(buffer, sizeof(buffer), "%02d", (int) t->s); break;
 -                      case 'u': length = slprintf(buffer, sizeof(buffer), "%06d", (int) floor(t->f * 1000000 + 0.5)); break;
 -                      case 'v': length = slprintf(buffer, sizeof(buffer), "%03d", (int) floor(t->f * 1000 + 0.5)); break;
++                      case 'u': length = slprintf(buffer, sizeof(buffer), "%06d", (int) floor(t->us)); break;
++                      case 'v': length = slprintf(buffer, sizeof(buffer), "%03d", (int) floor(t->us / 1000)); break;
  
                        /* timezone */
-                       case 'I': length = slprintf(buffer, 32, "%d", localtime ? offset->is_dst : 0); break;
+                       case 'I': length = slprintf(buffer, sizeof(buffer), "%d", localtime ? offset->is_dst : 0); break;
                        case 'P': rfc_colon = 1; /* break intentionally missing */
-                       case 'O': length = slprintf(buffer, 32, "%c%02d%s%02d",
+                       case 'O': length = slprintf(buffer, sizeof(buffer), "%c%02d%s%02d",
                                                                                        localtime ? ((offset->offset < 0) ? '-' : '+') : '+',
                                                                                        localtime ? abs(offset->offset / 3600) : 0,
                                                                                        rfc_colon ? ":" : "",
@@@ -4451,26 -4411,26 +4451,26 @@@ static zend_string *date_interval_forma
        for (i = 0; i < format_len; i++) {
                if (have_format_spec) {
                        switch (format[i]) {
-                               case 'Y': length = slprintf(buffer, 32, "%02d", (int) t->y); break;
-                               case 'y': length = slprintf(buffer, 32, "%d", (int) t->y); break;
+                               case 'Y': length = slprintf(buffer, sizeof(buffer), "%02d", (int) t->y); break;
+                               case 'y': length = slprintf(buffer, sizeof(buffer), "%d", (int) t->y); break;
  
-                               case 'M': length = slprintf(buffer, 32, "%02d", (int) t->m); break;
-                               case 'm': length = slprintf(buffer, 32, "%d", (int) t->m); break;
+                               case 'M': length = slprintf(buffer, sizeof(buffer), "%02d", (int) t->m); break;
+                               case 'm': length = slprintf(buffer, sizeof(buffer), "%d", (int) t->m); break;
  
-                               case 'D': length = slprintf(buffer, 32, "%02d", (int) t->d); break;
-                               case 'd': length = slprintf(buffer, 32, "%d", (int) t->d); break;
+                               case 'D': length = slprintf(buffer, sizeof(buffer), "%02d", (int) t->d); break;
+                               case 'd': length = slprintf(buffer, sizeof(buffer), "%d", (int) t->d); break;
  
-                               case 'H': length = slprintf(buffer, 32, "%02d", (int) t->h); break;
-                               case 'h': length = slprintf(buffer, 32, "%d", (int) t->h); break;
+                               case 'H': length = slprintf(buffer, sizeof(buffer), "%02d", (int) t->h); break;
+                               case 'h': length = slprintf(buffer, sizeof(buffer), "%d", (int) t->h); break;
  
-                               case 'I': length = slprintf(buffer, 32, "%02d", (int) t->i); break;
-                               case 'i': length = slprintf(buffer, 32, "%d", (int) t->i); break;
+                               case 'I': length = slprintf(buffer, sizeof(buffer), "%02d", (int) t->i); break;
+                               case 'i': length = slprintf(buffer, sizeof(buffer), "%d", (int) t->i); break;
  
-                               case 'S': length = slprintf(buffer, 32, "%02" ZEND_LONG_FMT_SPEC, (zend_long) t->s); break;
-                               case 's': length = slprintf(buffer, 32, ZEND_LONG_FMT, (zend_long) t->s); break;
+                               case 'S': length = slprintf(buffer, sizeof(buffer), "%02" ZEND_LONG_FMT_SPEC, (zend_long) t->s); break;
+                               case 's': length = slprintf(buffer, sizeof(buffer), ZEND_LONG_FMT, (zend_long) t->s); break;
  
-                               case 'F': length = slprintf(buffer, 32, "%06" ZEND_LONG_FMT_SPEC, (zend_long) t->us); break;
-                               case 'f': length = slprintf(buffer, 32, ZEND_LONG_FMT, (zend_long) t->us); break;
 -                              case 'F': length = slprintf(buffer, sizeof(buffer), "%06" ZEND_LONG_FMT_SPEC, (zend_long) (t->f * 1000000)); break;
 -                              case 'f': length = slprintf(buffer, sizeof(buffer), ZEND_LONG_FMT, (zend_long) (t->f * 1000000)); break;
++                              case 'F': length = slprintf(buffer, sizeof(buffer), "%06" ZEND_LONG_FMT_SPEC, (zend_long) t->us); break;
++                              case 'f': length = slprintf(buffer, sizeof(buffer), ZEND_LONG_FMT, (zend_long) t->us); break;
  
                                case 'a': {
                                        if ((int) t->days != -99999) {