From: Dr. Matthias St. Pierre Date: Tue, 16 Jan 2018 07:03:37 +0000 (+0100) Subject: Fix memory leak in do_rand_drbg_init() X-Git-Tag: OpenSSL_1_1_1-pre1~192 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=39571fcabf688a6efc4a567f6a8e5d4297b064cb;p=oweals%2Fopenssl.git Fix memory leak in do_rand_drbg_init() Fixes #5076 Since do_rand_drbg_init() allocates three locks, it needs to ensure that OPENSSL_init_crypto() is called, otherwise these resources are not cleaned up properly. Reviewed-by: Matt Caswell Reviewed-by: Ben Kaduk (Merged from https://github.com/openssl/openssl/pull/5083) --- diff --git a/crypto/rand/drbg_lib.c b/crypto/rand/drbg_lib.c index ff7f6546d7..5d3d0f2fd7 100644 --- a/crypto/rand/drbg_lib.c +++ b/crypto/rand/drbg_lib.c @@ -708,6 +708,13 @@ err: */ DEFINE_RUN_ONCE_STATIC(do_rand_drbg_init) { + /* + * ensure that libcrypto is initialized, otherwise the + * DRBG locks are not cleaned up properly + */ + if (!OPENSSL_init_crypto(0, NULL)) + return 0; + drbg_master = drbg_setup("drbg_master", NULL); drbg_public = drbg_setup("drbg_public", drbg_master); drbg_private = drbg_setup("drbg_private", drbg_master);