]> granicus.if.org Git - php/commitdiff
Use zend_string_safe_alloc
authorXinchen Hui <laruence@gmail.com>
Wed, 27 Apr 2016 04:23:51 +0000 (12:23 +0800)
committerXinchen Hui <laruence@gmail.com>
Wed, 27 Apr 2016 04:45:02 +0000 (12:45 +0800)
ext/gmp/gmp.c
ext/standard/string.c
ext/standard/var_unserializer.c
ext/standard/var_unserializer.re

index 56235e0c68a251525bf1e99cd89389c9cc794d24..928ec26005a529ed2518ba14c1d5be31e2ba4580 100644 (file)
@@ -1144,11 +1144,10 @@ ZEND_FUNCTION(gmp_export)
        } else {
                size_t bits_per_word = size * 8;
                size_t count = (mpz_sizeinbase(gmpnumber, 2) + bits_per_word - 1) / bits_per_word;
-               size_t out_len = count * size;
 
-               zend_string *out_string = zend_string_alloc(out_len, 0);
+               zend_string *out_string = zend_string_safe_alloc(count, out_len, 0, 0);
                mpz_export(ZSTR_VAL(out_string), NULL, order, size, endian, 0, gmpnumber);
-               ZSTR_VAL(out_string)[out_len] = '\0';
+               ZSTR_VAL(out_string)[ZSTR_LEN(out_string)] = '\0';
 
                RETURN_NEW_STR(out_string);
        }
index 7ee918c2fe4c8632d88a34073de77b1a931aea27..5219df915dd5cde349251c6f8bba4ea3d197252c 100644 (file)
@@ -5374,7 +5374,7 @@ PHP_FUNCTION(str_pad)
                return;
        }
 
-       result = zend_string_safe_alloc(ZSTR_LEN(input), 1, num_pad_chars, 0);
+       result = zend_string_safe_alloc(1, ZSTR_LEN(input), num_pad_chars, 0);
        ZSTR_LEN(result) = 0;
 
        /* We need to figure out the left/right padding lengths. */
index 389c42b3de75c2652cd51baa6691537a22650713..3fc074dd6ae2c1e7f0babb0f6bea42b4f0505747 100644 (file)
@@ -171,7 +171,7 @@ PHPAPI void var_destroy(php_unserialize_data_t *var_hashx)
 static zend_string *unserialize_str(const unsigned char **p, size_t len, size_t maxlen)
 {
        size_t i, j;
-       zend_string *str = zend_string_alloc(len, 0);
+       zend_string *str = zend_string_safe_alloc(1, len, 0, 0);
        unsigned char *end = *(unsigned char **)p+maxlen;
 
        if (end < *p) {
index c7e058163031dbf500889e1bbc76ba96169784ae..81cc26db9d11a29211ce56720fdf47e1b881edb1 100644 (file)
@@ -169,7 +169,7 @@ PHPAPI void var_destroy(php_unserialize_data_t *var_hashx)
 static zend_string *unserialize_str(const unsigned char **p, size_t len, size_t maxlen)
 {
        size_t i, j;
-       zend_string *str = zend_string_alloc(len, 0);
+       zend_string *str = zend_string_safe_alloc(1, len, 0, 0);
        unsigned char *end = *(unsigned char **)p+maxlen;
 
        if (end < *p) {