com php-src: Fixed #74099 - Memory leak with openssl_encrypt (): NEWS ext/openssl/openssl.c ext/openssl/tests/ bug74099.phpt

[email protected] (Nikita Popov)
Newsgroups php.cvs
Message-ID <[email protected]>
Commit:    15b8b124ae1017dc31dae46cee73b702d77f85b8
Author:    andrewnester <[email protected]>         Fri, 17 Feb 2017 12:33:35 +0300
Committer: Nikita Popov <[email protected]>      Fri, 17 Feb 2017 21:23:16 +0100
Parents:   c240feb7f4471d26b9622f48990e78203145fca6
Branches:  PHP-7.1 master

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

Log:
Fixed #74099 - Memory leak with openssl_encrypt()

Bugs:
https://bugs.php.net/74099

Changed paths:
  M  NEWS
  M  ext/openssl/openssl.c
  A  ext/openssl/tests/bug74099.phpt


Diff:
diff --git a/NEWS b/NEWS
index 8f0fb75..c988fa0 100644
--- a/NEWS
+++ b/NEWS
@@ -42,6 +42,7 @@ PHP                                                                        NEWS
 - OpenSSL:
   . Fixed bug #74022 (PHP Fast CGI crashes when reading from a pfx file).
     (Anatol)
+  . Fixed bug #74099 (Memory leak with openssl_encrypt()). (Andrew Nester)
 
 - Standard:
   . Fixed bug #74005 (mail.add_x_header causes RFC-breaking lone line feed).
diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c
index 8de329a..c1b433e 100644
--- a/ext/openssl/openssl.c
+++ b/ext/openssl/openssl.c
@@ -6309,8 +6309,7 @@ static int php_openssl_cipher_update(const EVP_CIPHER *cipher_type,
 
 	*poutbuf = zend_string_alloc((int)data_len + EVP_CIPHER_block_size(cipher_type), 0);
 
-	if ((!enc || data_len > 0) &&
-			!EVP_CipherUpdate(cipher_ctx, (unsigned char*)ZSTR_VAL(*poutbuf),
+	if (!EVP_CipherUpdate(cipher_ctx, (unsigned char*)ZSTR_VAL(*poutbuf),
 					&i, (unsigned char *)data, (int)data_len)) {
 		/* we don't show warning when we fail but if we ever do, then it should look like this:
 		if (mode->is_single_run_aead && !enc) {
@@ -6366,7 +6365,6 @@ PHP_FUNCTION(openssl_encrypt)
 		php_error_docref(NULL, E_WARNING, "Failed to create cipher context");
 		RETURN_FALSE;
 	}
-
 	php_openssl_load_cipher_mode(&mode, cipher_type);
 
 	if (php_openssl_cipher_init(cipher_type, cipher_ctx, &mode,
diff --git a/ext/openssl/tests/bug74099.phpt b/ext/openssl/tests/bug74099.phpt
new file mode 100644
index 0000000..c0e02ba
--- /dev/null
+++ b/ext/openssl/tests/bug74099.phpt
@@ -0,0 +1,20 @@
+--TEST--
+Bug #74099 Memory leak with openssl_encrypt()
+--SKIPIF--
+<?php
+if (!extension_loaded("openssl")) die("skip");
+?>
+--FILE--
+<?php
+$aad = random_bytes(32);
+$iv = random_bytes(16);
+$key = random_bytes(32);
+
+$plaintext = '';
+$tag = null;
+
+$ciphertext = openssl_encrypt($plaintext, 'aes-256-gcm', $key, \OPENSSL_RAW_DATA, $iv, $tag, $aad);
+var_dump($ciphertext);
+?>
+--EXPECTF--
+string(0) ""
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.