diff options
author | Dr. Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com> | 2018-01-16 08:03:37 +0100 |
---|---|---|
committer | Benjamin Kaduk <kaduk@mit.edu> | 2018-01-16 08:38:13 -0600 |
commit | 39571fcabf688a6efc4a567f6a8e5d4297b064cb (patch) | |
tree | d3738ad47638460fddda086ba3ef122e069ec018 /crypto | |
parent | d17bdfc26d87097c2c80854fd521b6ecebdf5ebb (diff) |
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 <matt@openssl.org>
Reviewed-by: Ben Kaduk <kaduk@mit.edu>
(Merged from https://github.com/openssl/openssl/pull/5083)
Diffstat (limited to 'crypto')
-rw-r--r-- | crypto/rand/drbg_lib.c | 7 |
1 files changed, 7 insertions, 0 deletions
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); |