com php-src: Fix possible memory leak in openssl_encrypt an d openssl_decrypt: ext/openssl/openssl.c

[email protected] (Jakub Zelenka)
Newsgroups php.cvs
Message-ID <[email protected]>
Commit:    a0b9554f94a47b32e9771b1be999e255ca6bacc7
Author:    Jakub Zelenka <[email protected]>         Thu, 27 Apr 2017 15:44:26 +0100
Parents:   7b392c7154eb06d8dd19f4e06155b8a4633ac766
Branches:  PHP-7.0

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

Log:
Fix possible memory leak in openssl_encrypt and openssl_decrypt

Changed paths:
  M  ext/openssl/openssl.c


Diff:
diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c
index 1242a80..15b4750 100644
--- a/ext/openssl/openssl.c
+++ b/ext/openssl/openssl.c
@@ -5699,6 +5699,7 @@ PHP_FUNCTION(openssl_encrypt)
 	}
 
 	PHP_OPENSSL_CHECK_SIZE_T_TO_INT(data_len, data);
+	PHP_OPENSSL_CHECK_SIZE_T_TO_INT(password_len, password);
 
 	cipher_ctx = EVP_CIPHER_CTX_new();
 	if (!cipher_ctx) {
@@ -5726,7 +5727,6 @@ PHP_FUNCTION(openssl_encrypt)
 
 	EVP_EncryptInit(cipher_ctx, cipher_type, NULL, NULL);
 	if (password_len > keylen) {
-		PHP_OPENSSL_CHECK_SIZE_T_TO_INT(password_len, password);
 		EVP_CIPHER_CTX_set_key_length(cipher_ctx, (int)password_len);
 	}
 	EVP_EncryptInit_ex(cipher_ctx, NULL, NULL, key, (unsigned char *)iv);
@@ -5790,6 +5790,7 @@ PHP_FUNCTION(openssl_decrypt)
 	}
 
 	PHP_OPENSSL_CHECK_SIZE_T_TO_INT(data_len, data);
+	PHP_OPENSSL_CHECK_SIZE_T_TO_INT(password_len, password);
 
 	cipher_type = EVP_get_cipherbyname(method);
 	if (!cipher_type) {
@@ -5830,7 +5831,6 @@ PHP_FUNCTION(openssl_decrypt)
 
 	EVP_DecryptInit(cipher_ctx, cipher_type, NULL, NULL);
 	if (password_len > keylen) {
-		PHP_OPENSSL_CHECK_SIZE_T_TO_INT(password_len, password);
 		EVP_CIPHER_CTX_set_key_length(cipher_ctx, (int)password_len);
 	}
 	EVP_DecryptInit_ex(cipher_ctx, NULL, NULL, key, (unsigned char *)iv);
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.