From 39571fcabf688a6efc4a567f6a8e5d4297b064cb Mon Sep 17 00:00:00 2001 From: "Dr. Matthias St. Pierre" Date: Tue, 16 Jan 2018 08:03:37 +0100 Subject: [PATCH] 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) --- crypto/rand/drbg_lib.c | 7 +++++++ 1 file changed, 7 insertions(+) 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); -- 2.34.1