Make it easier to buld test applications...
[openssl.git] / apps / pkcs8.c
index 6be27e7f442f688ddf1be5a21415d8151cd064d9..43a828484784944349297087ab14ebbd1e601136 100644 (file)
@@ -232,11 +232,14 @@ int MAIN(int argc, char **argv)
                pkey = load_key(bio_err, infile, informat, 1,
                        passin, e, "key");
                if (!pkey) {
+                       BIO_free_all(out);
                        return (1);
                }
                if (!(p8inf = EVP_PKEY2PKCS8_broken(pkey, p8_broken))) {
-                       BIO_printf(bio_err, "Error converting key\n", outfile);
+                       BIO_printf(bio_err, "Error converting key\n");
                        ERR_print_errors(bio_err);
+                       EVP_PKEY_free(pkey);
+                       BIO_free_all(out);
                        return (1);
                }
                if(nocrypt) {
@@ -246,6 +249,9 @@ int MAIN(int argc, char **argv)
                                i2d_PKCS8_PRIV_KEY_INFO_bio(out, p8inf);
                        else {
                                BIO_printf(bio_err, "Bad format specified for key\n");
+                               PKCS8_PRIV_KEY_INFO_free(p8inf);
+                               EVP_PKEY_free(pkey);
+                               BIO_free_all(out);
                                return (1);
                        }
                } else {
@@ -253,15 +259,22 @@ int MAIN(int argc, char **argv)
                        else {
                                p8pass = pass;
                                if (EVP_read_pw_string(pass, sizeof pass, "Enter Encryption Password:", 1))
+                               {
+                                       PKCS8_PRIV_KEY_INFO_free(p8inf);
+                                       EVP_PKEY_free(pkey);
+                                       BIO_free_all(out);
                                        return (1);
+                               }
                        }
                        app_RAND_load_file(NULL, bio_err, 0);
                        if (!(p8 = PKCS8_encrypt(pbe_nid, cipher,
                                        p8pass, strlen(p8pass),
                                        NULL, 0, iter, p8inf))) {
-                               BIO_printf(bio_err, "Error encrypting key\n",
-                                                                outfile);
+                               BIO_printf(bio_err, "Error encrypting key\n");
                                ERR_print_errors(bio_err);
+                               PKCS8_PRIV_KEY_INFO_free(p8inf);
+                               EVP_PKEY_free(pkey);
+                               BIO_free_all(out);
                                return (1);
                        }
                        app_RAND_write_file(NULL, bio_err);
@@ -271,6 +284,9 @@ int MAIN(int argc, char **argv)
                                i2d_PKCS8_bio(out, p8);
                        else {
                                BIO_printf(bio_err, "Bad format specified for key\n");
+                               PKCS8_PRIV_KEY_INFO_free(p8inf);
+                               EVP_PKEY_free(pkey);
+                               BIO_free_all(out);
                                return (1);
                        }
                        X509_SIG_free(p8);
@@ -303,7 +319,7 @@ int MAIN(int argc, char **argv)
                }
 
                if (!p8) {
-                       BIO_printf (bio_err, "Error reading key\n", outfile);
+                       BIO_printf (bio_err, "Error reading key\n");
                        ERR_print_errors(bio_err);
                        return (1);
                }
@@ -317,13 +333,13 @@ int MAIN(int argc, char **argv)
        }
 
        if (!p8inf) {
-               BIO_printf(bio_err, "Error decrypting key\n", outfile);
+               BIO_printf(bio_err, "Error decrypting key\n");
                ERR_print_errors(bio_err);
                return (1);
        }
 
        if (!(pkey = EVP_PKCS82PKEY(p8inf))) {
-               BIO_printf(bio_err, "Error converting key\n", outfile);
+               BIO_printf(bio_err, "Error converting key\n");
                ERR_print_errors(bio_err);
                return (1);
        }