Commit:    d69513afecf3d82c6bfba35ef1634b3b7c377d87
Author:    Remi Collet <r...@php.net>         Fri, 30 Aug 2013 10:42:08 +0200
Parents:   7da6498342d76c34892bfa247bc1779d8f5ee1e6
Branches:  PHP-5.4 PHP-5.5 master

Link:       
http://git.php.net/?p=php-src.git;a=commitdiff;h=d69513afecf3d82c6bfba35ef1634b3b7c377d87

Log:
Fixed Bug #65564 stack-buffer-overflow in DateTimeZone stuff caught by 
AddressSanitizer

Bugs:
https://bugs.php.net/65564

Changed paths:
  M  NEWS
  M  ext/date/php_date.c


Diff:
diff --git a/NEWS b/NEWS
index 42b69f5..76eb1fa 100644
--- a/NEWS
+++ b/NEWS
@@ -36,6 +36,8 @@ PHP                                                           
             NEWS
 - Datetime:
   . Fixed bug #65554 (createFromFormat broken when weekday name is followed 
     by some delimiters). (Valentin Logvinskiy, Stas).
+  . Fixed bug #65564 (stack-buffer-overflow in DateTimeZone stuff caught
+    by AddressSanitizer). (Remi).
 
 - Openssl:
   . Fixed bug #64802 (openssl_x509_parse fails to parse subject properly in 
diff --git a/ext/date/php_date.c b/ext/date/php_date.c
index 1c97781..70960b1 100644
--- a/ext/date/php_date.c
+++ b/ext/date/php_date.c
@@ -2113,13 +2113,13 @@ static HashTable *date_object_get_properties(zval 
*object TSRMLS_DC)
        /* first we add the date and time in ISO format */
        MAKE_STD_ZVAL(zv);
        ZVAL_STRING(zv, date_format("Y-m-d H:i:s", 12, dateobj->time, 1), 0);
-       zend_hash_update(props, "date", 5, &zv, sizeof(zval), NULL);
+       zend_hash_update(props, "date", 5, &zv, sizeof(zv), NULL);
 
        /* then we add the timezone name (or similar) */
        if (dateobj->time->is_localtime) {
                MAKE_STD_ZVAL(zv);
                ZVAL_LONG(zv, dateobj->time->zone_type);
-               zend_hash_update(props, "timezone_type", 14, &zv, sizeof(zval), 
NULL);
+               zend_hash_update(props, "timezone_type", 14, &zv, sizeof(zv), 
NULL);
 
                MAKE_STD_ZVAL(zv);
                switch (dateobj->time->zone_type) {
@@ -2142,7 +2142,7 @@ static HashTable *date_object_get_properties(zval *object 
TSRMLS_DC)
                                ZVAL_STRING(zv, dateobj->time->tz_abbr, 1);
                                break;
                }
-               zend_hash_update(props, "timezone", 9, &zv, sizeof(zval), NULL);
+               zend_hash_update(props, "timezone", 9, &zv, sizeof(zv), NULL);
        }
 
        return props;
@@ -2265,7 +2265,7 @@ static HashTable 
*date_object_get_properties_interval(zval *object TSRMLS_DC)
 #define PHP_DATE_INTERVAL_ADD_PROPERTY(n,f) \
        MAKE_STD_ZVAL(zv); \
        ZVAL_LONG(zv, (long)intervalobj->diff->f); \
-       zend_hash_update(props, n, strlen(n) + 1, &zv, sizeof(zval), NULL);
+       zend_hash_update(props, n, strlen(n) + 1, &zv, sizeof(zv), NULL);
 
        PHP_DATE_INTERVAL_ADD_PROPERTY("y", y);
        PHP_DATE_INTERVAL_ADD_PROPERTY("m", m);
@@ -2282,7 +2282,7 @@ static HashTable 
*date_object_get_properties_interval(zval *object TSRMLS_DC)
        } else {
                MAKE_STD_ZVAL(zv);
                ZVAL_FALSE(zv);
-               zend_hash_update(props, "days", 5, &zv, sizeof(zval), NULL);
+               zend_hash_update(props, "days", 5, &zv, sizeof(zv), NULL);
        }
        PHP_DATE_INTERVAL_ADD_PROPERTY("special_type", special.type);
        PHP_DATE_INTERVAL_ADD_PROPERTY("special_amount", special.amount);


--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to