diff options
author | Rich Salz <rsalz@openssl.org> | 2017-07-17 02:52:26 -0400 |
---|---|---|
committer | Rich Salz <rsalz@openssl.org> | 2017-07-17 07:46:49 -0400 |
commit | 54e5ba058b4f2c6042c14d44868077e9ffcff818 (patch) | |
tree | 034f4ded133914ea8b07b0b623834eac7d84ae9e /apps/app_rand.c | |
parent | f1b8b0010a5cdd76d1284ea47e9b5995dcd6f089 (diff) |
Fix use-after-free
Also fix a RANDerr call.
Reviewed-by: Andy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/3947)
Diffstat (limited to 'apps/app_rand.c')
-rw-r--r-- | apps/app_rand.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/apps/app_rand.c b/apps/app_rand.c index 3a05352f9f..28caad41a7 100644 --- a/apps/app_rand.c +++ b/apps/app_rand.c @@ -13,7 +13,7 @@ #include <openssl/rand.h> #include <openssl/conf.h> -static const char *save_rand_file; +static char *save_rand_file; void app_RAND_load_conf(CONF *c, const char *section) { @@ -29,7 +29,7 @@ void app_RAND_load_conf(CONF *c, const char *section) return; } if (save_rand_file == NULL) - save_rand_file = randfile; + save_rand_file = OPENSSL_strdup(randfile); } static int loadfiles(char *name) @@ -66,6 +66,8 @@ void app_RAND_write(void) BIO_printf(bio_err, "Cannot write random bytes:\n"); ERR_print_errors(bio_err); } + OPENSSL_free(save_rand_file); + save_rand_file = NULL; } @@ -84,7 +86,8 @@ int opt_rand(int opt) return loadfiles(opt_arg()); break; case OPT_R_WRITERAND: - save_rand_file = opt_arg(); + OPENSSL_free(save_rand_file); + save_rand_file = OPENSSL_strdup(opt_arg()); break; } return 1; |