apps/speed.c: Fix crash when config loading fails

Move rsa_key initialization in front of load_config().
If loading the config fails, rsa_key isn't initialized and may
cause invalid free() in the end: cleanup.
Remove superfluous memset.

Reviewed-by: Andy Polyakov <appro@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(cherry picked from commit c003851783ed05e3fd5296786e1f8f6a63dc4f31)
This commit is contained in:
Vitezslav Cizek 2016-11-24 13:21:41 +01:00 committed by Rich Salz
parent edfca4e3da
commit 4675a56a3c

View file

@ -666,6 +666,10 @@ int MAIN(int argc, char **argv)
ecdh_b[i] = NULL; ecdh_b[i] = NULL;
} }
# endif # endif
# ifndef OPENSSL_NO_RSA
for (i = 0; i < RSA_NUM; i++)
rsa_key[i] = NULL;
# endif
if (bio_err == NULL) if (bio_err == NULL)
if ((bio_err = BIO_new(BIO_s_file())) != NULL) if ((bio_err = BIO_new(BIO_s_file())) != NULL)
@ -674,12 +678,6 @@ int MAIN(int argc, char **argv)
if (!load_config(bio_err, NULL)) if (!load_config(bio_err, NULL))
goto end; goto end;
# ifndef OPENSSL_NO_RSA
memset(rsa_key, 0, sizeof(rsa_key));
for (i = 0; i < RSA_NUM; i++)
rsa_key[i] = NULL;
# endif
if ((buf = (unsigned char *)OPENSSL_malloc((int)BUFSIZE)) == NULL) { if ((buf = (unsigned char *)OPENSSL_malloc((int)BUFSIZE)) == NULL) {
BIO_printf(bio_err, "out of memory\n"); BIO_printf(bio_err, "out of memory\n");
goto end; goto end;