diff options
author | Pauli <paul.dale@oracle.com> | 2020-08-19 13:40:22 +1000 |
---|---|---|
committer | Pauli <paul.dale@oracle.com> | 2020-08-20 16:07:10 +1000 |
commit | ffcdb24b13590190e92c7f88e2ad3e0a721408f2 (patch) | |
tree | 8b157f825ff564babfa45cc9500de72183be44c3 /apps/pkeyutl.c | |
parent | 16486f6332410d0d9e8f2606abb970d32b0572d3 (diff) |
pkeyutil: check return value reading password
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/12678)
Diffstat (limited to 'apps/pkeyutl.c')
-rw-r--r-- | apps/pkeyutl.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/apps/pkeyutl.c b/apps/pkeyutl.c index 4de2a56590..9bfef87311 100644 --- a/apps/pkeyutl.c +++ b/apps/pkeyutl.c @@ -331,9 +331,18 @@ int pkeyutl_main(int argc, char **argv) if (passin == NULL) { /* Get password interactively */ char passwd_buf[4096]; + int r; + BIO_snprintf(passwd_buf, sizeof(passwd_buf), "Enter %s: ", opt); - EVP_read_pw_string(passwd_buf, sizeof(passwd_buf) - 1, - passwd_buf, 0); + r = EVP_read_pw_string(passwd_buf, sizeof(passwd_buf) - 1, + passwd_buf, 0); + if (r < 0) { + if (r == -2) + BIO_puts(bio_err, "user abort\n"); + else + BIO_puts(bio_err, "entry failed\n"); + goto end; + } passwd = OPENSSL_strdup(passwd_buf); if (passwd == NULL) { BIO_puts(bio_err, "out of memory\n"); |