From ac5090b780c5534963061f3e6554e2a59114ed75 Mon Sep 17 00:00:00 2001 From: Dmitry Belyavskiy Date: Fri, 24 Aug 2018 11:48:00 +0300 Subject: [PATCH] Backport #7007 to 1.1.0 Reviewed-by: Viktor Dukhovni Reviewed-by: Nicola Tuveri (Merged from https://github.com/openssl/openssl/pull/7052) --- apps/pkey.c | 46 ++++++++++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/apps/pkey.c b/apps/pkey.c index ad1a3b10eb..60e8581f44 100644 --- a/apps/pkey.c +++ b/apps/pkey.c @@ -141,24 +141,30 @@ int pkey_main(int argc, char **argv) if (!noout) { if (outformat == FORMAT_PEM) { - if (pubout) - PEM_write_bio_PUBKEY(out, pkey); - else { + if (pubout) { + if (!PEM_write_bio_PUBKEY(out, pkey)) + goto end; + } else { assert(private); - if (traditional) - PEM_write_bio_PrivateKey_traditional(out, pkey, cipher, - NULL, 0, NULL, - passout); - else - PEM_write_bio_PrivateKey(out, pkey, cipher, - NULL, 0, NULL, passout); + if (traditional) { + if (!PEM_write_bio_PrivateKey_traditional(out, pkey, cipher, + NULL, 0, NULL, + passout)) + goto end; + } else { + if (!PEM_write_bio_PrivateKey(out, pkey, cipher, + NULL, 0, NULL, passout)) + goto end; + } } } else if (outformat == FORMAT_ASN1) { - if (pubout) - i2d_PUBKEY_bio(out, pkey); - else { + if (pubout) { + if (!i2d_PUBKEY_bio(out, pkey)) + goto end; + } else { assert(private); - i2d_PrivateKey_bio(out, pkey); + if (!i2d_PrivateKey_bio(out, pkey)) + goto end; } } else { BIO_printf(bio_err, "Bad format specified for key\n"); @@ -168,17 +174,21 @@ int pkey_main(int argc, char **argv) } if (text) { - if (pubtext) - EVP_PKEY_print_public(out, pkey, 0, NULL); - else { + if (pubtext) { + if (EVP_PKEY_print_public(out, pkey, 0, NULL) <= 0) + goto end; + } else { assert(private); - EVP_PKEY_print_private(out, pkey, 0, NULL); + if (EVP_PKEY_print_private(out, pkey, 0, NULL) <= 0) + goto end; } } ret = 0; end: + if (ret != 0) + ERR_print_errors(bio_err); EVP_PKEY_free(pkey); release_engine(e); BIO_free_all(out); -- 2.25.1