Re: [PATCH 1/5] selftests/sgx: Fix uninitialized pointer dereference in error path.

From: Jo Van Bulck
Date: Mon Aug 07 2023 - 02:15:16 EST


On 03.08.23 05:51, Huang, Kai wrote:
Is it safe to assume EVP_MD_CTX_destroy() can always handle a NULL ctx?

The manpage says:

EVP_MD_CTX_destroy() cleans up digest context ctx and frees up the space
allocated to it, it should be called only on a context created using
EVP_MD_CTX_create().

Thank you for pointing this out. Afais the implementations I've seen can handle NULL, and similar error-handling paths exists where EVP_MD_CTX_destroy() is called with a NULL pointer exist in several places in the openSSL code.

That being said, this indeed not explicit in the specification (unlike RSA_free() which is called just after and explicitly specifies that NULL is okay). So you're probably right that it's generally safer to not call EVP_MD_CTX_destroy() with a NULL pointer.

I'll include an extra check for this in the next patch revision.