projects
/
openssl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix memory leak when RAND is used: need to cleanup
[openssl.git]
/
crypto
/
rand
/
rand_lib.c
diff --git
a/crypto/rand/rand_lib.c
b/crypto/rand/rand_lib.c
index 597c098d3e389119edae8154e7a2aa29debc3997..adbae32ce358633be5cfcd3bb93777ade4e7fa55 100644
(file)
--- a/
crypto/rand/rand_lib.c
+++ b/
crypto/rand/rand_lib.c
@@
-58,6
+58,7
@@
#include <stdio.h>
#include <time.h>
#include <stdio.h>
#include <time.h>
+#include "cryptlib.h"
#include <openssl/rand.h>
#include <openssl/engine.h>
#include <openssl/rand.h>
#include <openssl/engine.h>
@@
-73,11
+74,12
@@
int RAND_set_rand_method(ENGINE *engine)
{
ENGINE *mtmp;
mtmp = rand_engine;
{
ENGINE *mtmp;
mtmp = rand_engine;
- if (!ENGINE_init(engine))
+ if (
engine &&
!ENGINE_init(engine))
return 0;
rand_engine = engine;
/* SHOULD ERROR CHECK THIS!!! */
return 0;
rand_engine = engine;
/* SHOULD ERROR CHECK THIS!!! */
- ENGINE_finish(mtmp);
+ if(mtmp)
+ ENGINE_finish(mtmp);
return 1;
}
#endif
return 1;
}
#endif
@@
-86,7
+88,10
@@
const RAND_METHOD *RAND_get_rand_method(void)
{
if (rand_engine == NULL
&& (rand_engine = ENGINE_get_default_RAND()) == NULL)
{
if (rand_engine == NULL
&& (rand_engine = ENGINE_get_default_RAND()) == NULL)
+ {
+ RANDerr(RAND_F_RAND_GET_RAND_METHOD,ERR_LIB_ENGINE);
return NULL;
return NULL;
+ }
return ENGINE_get_RAND(rand_engine);
}
return ENGINE_get_RAND(rand_engine);
}