summaryrefslogtreecommitdiffstats
path: root/apps/app_rand.c
diff options
context:
space:
mode:
authorRich Salz <rsalz@openssl.org>2017-07-17 02:52:26 -0400
committerRich Salz <rsalz@openssl.org>2017-07-17 07:46:49 -0400
commit54e5ba058b4f2c6042c14d44868077e9ffcff818 (patch)
tree034f4ded133914ea8b07b0b623834eac7d84ae9e /apps/app_rand.c
parentf1b8b0010a5cdd76d1284ea47e9b5995dcd6f089 (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.c9
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;