summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2001-06-21 12:19:10 +0000
committerDr. Stephen Henson <steve@openssl.org>2001-06-21 12:19:10 +0000
commited5538dc2bf723388aba3aea332bf554c514dcfe (patch)
tree641425173d9370ae2dd48910c4b2098f18508de4
parentb8ffcf49edc15d60714963b268ce4b28c45e382a (diff)
Fix memory leak when RAND is used: need to cleanup
RANDs ENGINE reference in ENGINE_cleanup().
-rw-r--r--crypto/engine/engine_lib.c3
-rw-r--r--crypto/rand/rand_lib.c5
2 files changed, 5 insertions, 3 deletions
diff --git a/crypto/engine/engine_lib.c b/crypto/engine/engine_lib.c
index 84efe96163..f82a20ad03 100644
--- a/crypto/engine/engine_lib.c
+++ b/crypto/engine/engine_lib.c
@@ -856,7 +856,8 @@ int ENGINE_clear_defaults(void)
#endif
!ENGINE_set_default_RAND(NULL) ||
!ENGINE_set_default_BN_mod_exp(NULL) ||
- !ENGINE_set_default_BN_mod_exp_crt(NULL))
+ !ENGINE_set_default_BN_mod_exp_crt(NULL) ||
+ !RAND_set_rand_method(NULL))
return 0;
return 1;
}
diff --git a/crypto/rand/rand_lib.c b/crypto/rand/rand_lib.c
index 38cea79938..adbae32ce3 100644
--- a/crypto/rand/rand_lib.c
+++ b/crypto/rand/rand_lib.c
@@ -74,11 +74,12 @@ int RAND_set_rand_method(ENGINE *engine)
{
ENGINE *mtmp;
mtmp = rand_engine;
- if (!ENGINE_init(engine))
+ if (engine && !ENGINE_init(engine))
return 0;
rand_engine = engine;
/* SHOULD ERROR CHECK THIS!!! */
- ENGINE_finish(mtmp);
+ if(mtmp)
+ ENGINE_finish(mtmp);
return 1;
}
#endif