Fix internal memory leaks from OPENSSL_MALLOC_FAILURES
authorBernd Edlinger <bernd.edlinger@hotmail.de>
Mon, 4 Sep 2023 07:40:28 +0000 (09:40 +0200)
committerHugo Landau <hlandau@openssl.org>
Tue, 5 Sep 2023 10:52:59 +0000 (11:52 +0100)
commit7c14ec86fefeb3dc92e56e7937d10cbe60f13e67
treec7c9dae5ef8310ec16f990673c9140fd7190885e
parentc503577a606dc0ee4cba07d13d504f641998b98b
Fix internal memory leaks from OPENSSL_MALLOC_FAILURES

There is a rarely used feature that can be enabled
with `./config enable-crypto-mdebug` when additionally
the environment variable OPENSSL_MALLOC_FAILURES is used.
It turns out to be possible that CRYPTO_zalloc may
create a leak when the memory is allocated and then
the shouldfail happens, then the memory is lost.
Likewise when OPENSSL_realloc is used with size=0,
then the memory is to be free'd but here the shouldfail
check is too early, and the failure may prevent the
memory to be freed thus creating a bogus memory leak.

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Hugo Landau <hlandau@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/21944)

(cherry picked from commit e2cf38d5751d6b48c8625b622c3765d0a39958d7)
crypto/mem.c