Fix usage of custom EVP_CIPHER objects
authorMatt Caswell <matt@openssl.org>
Wed, 10 Aug 2022 14:31:00 +0000 (15:31 +0100)
committerMatt Caswell <matt@openssl.org>
Mon, 3 Oct 2022 14:09:44 +0000 (15:09 +0100)
commit5485c56679d7c49b96e8fc8ca708b0b7e7c03c4b
tree361188aa191ac32a38163460ac6181c2367c569f
parent9f0867da4cbf77ed642717b5e703e09ab2c087a0
Fix usage of custom EVP_CIPHER objects

If a custom EVP_CIPHER object has been passed to EVP_CipherInit() then it
should be used in preference to a fetched cipher.

We also fix a possible NULL pointer deref in the same code for digests.

If the custom cipher passed to EVP_CipherInit() happens to use NID_undef
(which should be a discouraged practice), then in the previous
implementation this could result in the NULL cipher being fetched and
hence NULL encryption being unexpectedly used.

CVE-2022-3358

Fixes #18970

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19300)

(cherry picked from commit 25d47cccf203c3b71171e78865e48ea061a039a8)
crypto/evp/digest.c
crypto/evp/evp_enc.c