diff options
author | Dmitry Stogov <dmitry@zend.com> | 2018-05-28 16:27:12 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2018-05-28 16:27:12 +0300 |
commit | 5eb1f92f31cafc48384f9096012f421b37f6d425 (patch) | |
tree | 4ed67b92229407e7b5cbab37b96428fe80eb3f94 /ext/openssl | |
parent | 925f05dd1a35eafa71eb29abb69cdfc31a23a75d (diff) | |
download | php-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.c | 48 | ||||
-rw-r--r-- | ext/openssl/xp_ssl.c | 2 |
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; |