summaryrefslogtreecommitdiff
path: root/ext/mcrypt/mcrypt.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2015-07-01 14:12:46 +0300
committerDmitry Stogov <dmitry@zend.com>2015-07-01 14:12:46 +0300
commit89b49b02fc9efebc5faac6d36933a877dda51f9d (patch)
tree4972a559229920c27e112ad0ed040f59582491ee /ext/mcrypt/mcrypt.c
parent7d82deab35806c7169d2e40116f236d16cc80f3f (diff)
downloadphp-git-89b49b02fc9efebc5faac6d36933a877dda51f9d.tar.gz
Cleanup (avoid reallocation)
Diffstat (limited to 'ext/mcrypt/mcrypt.c')
-rw-r--r--ext/mcrypt/mcrypt.c21
1 files changed, 10 insertions, 11 deletions
diff --git a/ext/mcrypt/mcrypt.c b/ext/mcrypt/mcrypt.c
index ede27414f4..f9cc076d0d 100644
--- a/ext/mcrypt/mcrypt.c
+++ b/ext/mcrypt/mcrypt.c
@@ -600,7 +600,7 @@ PHP_FUNCTION(mcrypt_generic)
char *data;
size_t data_len;
php_mcrypt *pm;
- char* data_s;
+ zend_string* data_str;
int block_size, data_size;
if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &mcryptind, &data, &data_len) == FAILURE) {
@@ -621,21 +621,20 @@ PHP_FUNCTION(mcrypt_generic)
if (mcrypt_enc_is_block_mode(pm->td) == 1) { /* It's a block algorithm */
block_size = mcrypt_enc_get_block_size(pm->td);
data_size = ((((int)data_len - 1) / block_size) + 1) * block_size;
- data_s = emalloc(data_size + 1);
- memset(data_s, 0, data_size);
- memcpy(data_s, data, data_len);
+ data_str = zend_string_alloc(data_size, 0);
+ memset(ZSTR_VAL(data_str), 0, data_size);
+ memcpy(ZSTR_VAL(data_str), data, data_len);
} else { /* It's not a block algorithm */
data_size = (int)data_len;
- data_s = emalloc(data_size + 1);
- memset(data_s, 0, data_size);
- memcpy(data_s, data, data_len);
+ data_str = zend_string_alloc(data_size, 0);
+ memset(ZSTR_VAL(data_str), 0, data_size);
+ memcpy(ZSTR_VAL(data_str), data, data_len);
}
- mcrypt_generic(pm->td, data_s, data_size);
- data_s[data_size] = '\0';
+ mcrypt_generic(pm->td, ZSTR_VAL(data_str), data_size);
+ ZSTR_VAL(data_str)[data_size] = '\0';
- RETVAL_STRINGL(data_s, data_size);
- efree(data_s);
+ RETVAL_NEW_STR(data_str);
}
/* }}} */