From c1eab59b19e9593fbd0568b5e6f0062c65cd029b Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> Date: Sun, 3 Nov 2024 21:18:34 +0100 Subject: [PATCH] Fix memory leak in php_openssl_pkey_from_zval() --- ext/openssl/openssl.c | 1 + .../php_openssl_pkey_from_zval_leak.phpt | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 ext/openssl/tests/php_openssl_pkey_from_zval_leak.phpt diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c index 4b4a8d7f3566..6828ad9cd1b8 100644 --- a/ext/openssl/openssl.c +++ b/ext/openssl/openssl.c @@ -3525,6 +3525,7 @@ static EVP_PKEY *php_openssl_pkey_from_zval( } else { ZVAL_COPY(&tmp, zphrase); if (!try_convert_to_string(&tmp)) { + zval_ptr_dtor(&tmp); return NULL; } diff --git a/ext/openssl/tests/php_openssl_pkey_from_zval_leak.phpt b/ext/openssl/tests/php_openssl_pkey_from_zval_leak.phpt new file mode 100644 index 000000000000..2b19dd311150 --- /dev/null +++ b/ext/openssl/tests/php_openssl_pkey_from_zval_leak.phpt @@ -0,0 +1,23 @@ +--TEST-- +php_openssl_pkey_from_zval memory leak +--EXTENSIONS-- +openssl +--FILE-- +getMessage(), "\n"; +} + +?> +--EXPECT-- +create a leak