summaryrefslogtreecommitdiff
path: root/ext/openssl
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2018-05-28 16:27:12 +0300
committerDmitry Stogov <dmitry@zend.com>2018-05-28 16:27:12 +0300
commit5eb1f92f31cafc48384f9096012f421b37f6d425 (patch)
tree4ed67b92229407e7b5cbab37b96428fe80eb3f94 /ext/openssl
parent925f05dd1a35eafa71eb29abb69cdfc31a23a75d (diff)
downloadphp-git-5eb1f92f31cafc48384f9096012f421b37f6d425.tar.gz
Use zend_string_release_ex() instread of zend_string_release() in places, where we sure about string persistence.
Diffstat (limited to 'ext/openssl')
-rw-r--r--ext/openssl/openssl.c48
-rw-r--r--ext/openssl/xp_ssl.c2
2 files changed, 25 insertions, 25 deletions
diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c
index c2cd1d32fb..4aae81dbd7 100644
--- a/ext/openssl/openssl.c
+++ b/ext/openssl/openssl.c
@@ -1897,7 +1897,7 @@ cleanup:
}
if (keyresource == NULL && s != NULL) {
- zend_string_release(s);
+ zend_string_release_ex(s, 0);
}
}
/* }}} */
@@ -4930,10 +4930,10 @@ PHP_FUNCTION(openssl_dh_compute_key)
if (len >= 0) {
ZSTR_LEN(data) = len;
ZSTR_VAL(data)[len] = 0;
- RETVAL_STR(data);
+ RETVAL_NEW_STR(data);
} else {
php_openssl_store_errors();
- zend_string_release(data);
+ zend_string_release_ex(data, 0);
RETVAL_FALSE;
}
@@ -4975,10 +4975,10 @@ PHP_FUNCTION(openssl_pkey_derive)
if (EVP_PKEY_derive(ctx, (unsigned char*)ZSTR_VAL(result), &key_size) > 0) {
ZSTR_LEN(result) = key_size;
ZSTR_VAL(result)[key_size] = 0;
- RETVAL_STR(result);
+ RETVAL_NEW_STR(result);
} else {
php_openssl_store_errors();
- zend_string_release(result);
+ zend_string_release_ex(result, 0);
RETVAL_FALSE;
}
} else {
@@ -5039,7 +5039,7 @@ PHP_FUNCTION(openssl_pbkdf2)
RETURN_NEW_STR(out_buffer);
} else {
php_openssl_store_errors();
- zend_string_release(out_buffer);
+ zend_string_release_ex(out_buffer, 0);
RETURN_FALSE;
}
}
@@ -5681,7 +5681,7 @@ PHP_FUNCTION(openssl_private_encrypt)
php_openssl_store_errors();
}
if (cryptedbuf) {
- zend_string_release(cryptedbuf);
+ zend_string_release_ex(cryptedbuf, 0);
}
if (keyresource == NULL) {
EVP_PKEY_free(pkey);
@@ -5754,7 +5754,7 @@ PHP_FUNCTION(openssl_private_decrypt)
EVP_PKEY_free(pkey);
}
if (cryptedbuf) {
- zend_string_release(cryptedbuf);
+ zend_string_release_ex(cryptedbuf, 0);
}
}
/* }}} */
@@ -5815,7 +5815,7 @@ PHP_FUNCTION(openssl_public_encrypt)
EVP_PKEY_free(pkey);
}
if (cryptedbuf) {
- zend_string_release(cryptedbuf);
+ zend_string_release_ex(cryptedbuf, 0);
}
}
/* }}} */
@@ -5884,7 +5884,7 @@ PHP_FUNCTION(openssl_public_decrypt)
}
if (cryptedbuf) {
- zend_string_release(cryptedbuf);
+ zend_string_release_ex(cryptedbuf, 0);
}
if (keyresource == NULL) {
EVP_PKEY_free(pkey);
@@ -6371,12 +6371,12 @@ PHP_FUNCTION(openssl_digest)
make_digest_ex(ZSTR_VAL(digest_str), (unsigned char*)ZSTR_VAL(sigbuf), siglen);
ZSTR_VAL(digest_str)[digest_str_len] = '\0';
- zend_string_release(sigbuf);
- RETVAL_STR(digest_str);
+ zend_string_release_ex(sigbuf, 0);
+ RETVAL_NEW_STR(digest_str);
}
} else {
php_openssl_store_errors();
- zend_string_release(sigbuf);
+ zend_string_release_ex(sigbuf, 0);
RETVAL_FALSE;
}
@@ -6572,7 +6572,7 @@ static int php_openssl_cipher_update(const EVP_CIPHER *cipher_type,
}
*/
php_openssl_store_errors();
- zend_string_release(*poutbuf);
+ zend_string_release_ex(*poutbuf, 0);
return FAILURE;
}
@@ -6636,7 +6636,7 @@ PHP_FUNCTION(openssl_encrypt)
zend_string *base64_str;
base64_str = php_base64_encode((unsigned char*)ZSTR_VAL(outbuf), outlen);
- zend_string_release(outbuf);
+ zend_string_release_ex(outbuf, 0);
outbuf = base64_str;
RETVAL_STR(base64_str);
}
@@ -6650,8 +6650,8 @@ PHP_FUNCTION(openssl_encrypt)
ZVAL_NEW_STR(tag, tag_str);
} else {
php_error_docref(NULL, E_WARNING, "Retrieving verification tag failed");
- zend_string_release(tag_str);
- zend_string_release(outbuf);
+ zend_string_release_ex(tag_str, 0);
+ zend_string_release_ex(outbuf, 0);
RETVAL_FALSE;
}
} else if (tag) {
@@ -6661,12 +6661,12 @@ PHP_FUNCTION(openssl_encrypt)
"The authenticated tag cannot be provided for cipher that doesn not support AEAD");
} else if (mode.is_aead) {
php_error_docref(NULL, E_WARNING, "A tag should be provided when using AEAD mode");
- zend_string_release(outbuf);
+ zend_string_release_ex(outbuf, 0);
RETVAL_FALSE;
}
} else {
php_openssl_store_errors();
- zend_string_release(outbuf);
+ zend_string_release_ex(outbuf, 0);
RETVAL_FALSE;
}
@@ -6750,7 +6750,7 @@ PHP_FUNCTION(openssl_decrypt)
RETVAL_STR(outbuf);
} else {
php_openssl_store_errors();
- zend_string_release(outbuf);
+ zend_string_release_ex(outbuf, 0);
RETVAL_FALSE;
}
@@ -6761,7 +6761,7 @@ PHP_FUNCTION(openssl_decrypt)
efree(iv);
}
if (base64_str) {
- zend_string_release(base64_str);
+ zend_string_release_ex(base64_str, 0);
}
EVP_CIPHER_CTX_cleanup(cipher_ctx);
EVP_CIPHER_CTX_free(cipher_ctx);
@@ -6824,7 +6824,7 @@ PHP_FUNCTION(openssl_random_pseudo_bytes)
#ifdef PHP_WIN32
/* random/urandom equivalent on Windows */
if (php_win32_get_random_bytes((unsigned char*)buffer->val, (size_t) buffer_length) == FAILURE){
- zend_string_release(buffer);
+ zend_string_release_ex(buffer, 0);
if (zstrong_result_returned) {
ZVAL_FALSE(zstrong_result_returned);
}
@@ -6836,7 +6836,7 @@ PHP_FUNCTION(openssl_random_pseudo_bytes)
PHP_OPENSSL_RAND_ADD_TIME();
/* FIXME loop if requested size > INT_MAX */
if (RAND_bytes((unsigned char*)ZSTR_VAL(buffer), (int)buffer_length) <= 0) {
- zend_string_release(buffer);
+ zend_string_release_ex(buffer, 0);
if (zstrong_result_returned) {
ZVAL_FALSE(zstrong_result_returned);
}
@@ -6847,7 +6847,7 @@ PHP_FUNCTION(openssl_random_pseudo_bytes)
#endif
ZSTR_VAL(buffer)[buffer_length] = 0;
- RETVAL_STR(buffer);
+ RETVAL_NEW_STR(buffer);
if (zstrong_result_returned) {
ZVAL_BOOL(zstrong_result_returned, 1);
diff --git a/ext/openssl/xp_ssl.c b/ext/openssl/xp_ssl.c
index 9225f67668..0d5027f41e 100644
--- a/ext/openssl/xp_ssl.c
+++ b/ext/openssl/xp_ssl.c
@@ -313,7 +313,7 @@ static int php_openssl_x509_fingerprint_cmp(X509 *peer, const char *method, cons
fingerprint = php_openssl_x509_fingerprint(peer, method, 0);
if (fingerprint) {
result = strcasecmp(expected, ZSTR_VAL(fingerprint));
- zend_string_release(fingerprint);
+ zend_string_release_ex(fingerprint, 0);
}
return result;