mirror of https://github.com/openssl/openssl.git
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 e2cf38d575)
This commit is contained in:
parent
662e59ea01
commit
02fe525666
|
|
@ -195,7 +195,6 @@ void *CRYPTO_zalloc(size_t num, const char *file, int line)
|
|||
void *ret;
|
||||
|
||||
ret = CRYPTO_malloc(num, file, line);
|
||||
FAILTEST();
|
||||
if (ret != NULL)
|
||||
memset(ret, 0, num);
|
||||
|
||||
|
|
@ -208,7 +207,6 @@ void *CRYPTO_realloc(void *str, size_t num, const char *file, int line)
|
|||
if (realloc_impl != CRYPTO_realloc)
|
||||
return realloc_impl(str, num, file, line);
|
||||
|
||||
FAILTEST();
|
||||
if (str == NULL)
|
||||
return CRYPTO_malloc(num, file, line);
|
||||
|
||||
|
|
@ -217,6 +215,7 @@ void *CRYPTO_realloc(void *str, size_t num, const char *file, int line)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
FAILTEST();
|
||||
return realloc(str, num);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue