pk7_doit.c: Check return of BIO_set_md() calls
authorTomas Mraz <tomas@openssl.org>
Wed, 18 Jan 2023 08:27:53 +0000 (09:27 +0100)
committerTomas Mraz <tomas@openssl.org>
Fri, 3 Feb 2023 11:38:44 +0000 (12:38 +0100)
commitd3b6dfd70db844c4499bec6ad6601623a565e674
treeaaf696edab66422f4497de3ed2ed36f14ba4b259
parent2f7530077e0ef79d98718138716bc51ca0cad658
pk7_doit.c: Check return of BIO_set_md() calls

These calls invoke EVP_DigestInit() which can fail for digests
with implicit fetches. Subsequent EVP_DigestUpdate() from BIO_write()
or EVP_DigestFinal() from BIO_read() will segfault on NULL
dereference. This can be triggered by an attacker providing
PKCS7 data digested with MD4 for example if the legacy provider
is not loaded.

If BIO_set_md() fails the md BIO cannot be used.

CVE-2023-0401

Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
crypto/pkcs7/pk7_doit.c