Am 30.10.21 um 21:28 schrieb Selva Nair:
> This has an ACK, but will leak memory in OpenSSL 3.0
> 
> On Tue, Oct 19, 2021 at 2:32 PM Arne Schwabe <a...@rfc2549.org
> <mailto:a...@rfc2549.org>> wrote:
> 
>     In OpenSSL 3.0 EVP_get_cipherbyname return a non NULL algorithm
>     even if the algorithm is not avaialble with the currently available
>     provider. Luckily EVP_get_cipherbyname can be used here as drop
>     in replacement and returns only non NULL if the algorithm is actually
>     currently supported.
> 
>     Signed-off-by: Arne Schwabe <a...@rfc2549.org <mailto:a...@rfc2549.org>>
>     ---
>      src/openvpn/crypto_openssl.c |  6 +++---
>      src/openvpn/openssl_compat.h | 17 +++++++++++++++++
>      2 files changed, 20 insertions(+), 3 deletions(-)
> 
>     diff --git a/src/openvpn/crypto_openssl.c b/src/openvpn/crypto_openssl.c
>     index 93c85a836..b10bd7cd5 100644
>     --- a/src/openvpn/crypto_openssl.c
>     +++ b/src/openvpn/crypto_openssl.c
>     @@ -572,7 +572,7 @@ cipher_kt_get(const char *ciphername)
>          ASSERT(ciphername);
> 
>          ciphername = translate_cipher_name_from_openvpn(ciphername);
>     -    cipher = EVP_get_cipherbyname(ciphername);
>     +    cipher = EVP_CIPHER_fetch(NULL, ciphername, NULL);
> 
> 
> In OpenSSL 3.0, this 'cipher' must be freed. But the compat function is
> written using get_cipherbyname() which returns a const variable that
> should not be freed. Also, here we want to return a const cipher to the
> caller.
> 
> One option is to continue using get_cipherbyname() but add a helper call
> for OpenSSL 3.0 to check algorithm availability. Say,
> EVP_CIPHER_available() that fetches, checks the result and frees --- 
> to be used on top of the existing code.

That is an option but will break as soon as we have the first cipher
that is no longer defined with EVP_ORIG_GLOBAL compatibility definition.
I need to check how much work it is to teach OpenVPN to free the cipher
and md.

Arne


_______________________________________________
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel

Reply via email to