X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=apps%2Fpkcs8.c;h=43a828484784944349297087ab14ebbd1e601136;hb=fd836aeee017d4c7fef8e4d21afa07081e815be2;hp=ee8cf028138d6434d0d03f09f01746a4986bb828;hpb=3ae70939baf60524135f7e3c47e93ad2a55e611b;p=oweals%2Fopenssl.git diff --git a/apps/pkcs8.c b/apps/pkcs8.c index ee8cf02813..43a8284847 100644 --- a/apps/pkcs8.c +++ b/apps/pkcs8.c @@ -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"); 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,7 +259,12 @@ 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, @@ -261,6 +272,9 @@ int MAIN(int argc, char **argv) NULL, 0, iter, p8inf))) { 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); @@ -270,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);