apps/speed.c: Fix crash when config loading fails OpenSSL_1_0_1-stable
authorVitezslav Cizek <vcizek@suse.com>
Thu, 24 Nov 2016 12:21:41 +0000 (13:21 +0100)
committerRich Salz <rsalz@openssl.org>
Sun, 27 Nov 2016 01:09:12 +0000 (20:09 -0500)
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)

apps/speed.c

index ef72723036510f53f6592bbfd45dd029c0353d23..792247350460a608fa5ed78a1cc7f2e8232efed2 100644 (file)
@@ -666,6 +666,10 @@ int MAIN(int argc, char **argv)
         ecdh_b[i] = NULL;
     }
 # endif
+# ifndef OPENSSL_NO_RSA
+    for (i = 0; i < RSA_NUM; i++)
+        rsa_key[i] = NULL;
+# endif
 
     if (bio_err == 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))
         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) {
         BIO_printf(bio_err, "out of memory\n");
         goto end;