From a6dda5fefdca6f39b7f90ee0e8ba3cfc9bae7345 Mon Sep 17 00:00:00 2001 From: Oliver Stöneberg Date: Mon, 2 May 2011 09:25:12 -0700 Subject: keyfiles: Use BIO* in _privatekey_from_file(). (cherry picked from commit 82df5dc2083a6f7234d1545bd671ee1b5b4680b6) --- src/keyfiles.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/keyfiles.c b/src/keyfiles.c index d0f30076..1c5c34db 100644 --- a/src/keyfiles.c +++ b/src/keyfiles.c @@ -872,6 +872,15 @@ ssh_private_key _privatekey_from_file(void *session, const char *filename, } #endif +#ifdef HAVE_LIBCRYPTO + bio = BIO_new_file(filename,"r"); + if (bio == NULL) { + fclose(file); + ssh_set_error(session, SSH_FATAL, "Could not create BIO."); + return NULL; + } +#endif + switch (type) { case SSH_KEYTYPE_DSS: #ifdef HAVE_LIBGCRYPT @@ -884,7 +893,7 @@ ssh_private_key _privatekey_from_file(void *session, const char *filename, #elif defined HAVE_LIBCRYPTO dsa = PEM_read_bio_DSAPrivateKey(bio, NULL, NULL, NULL); - BIO_free(bio); + BIO_free(bio); if (dsa == NULL) { ssh_set_error(session, SSH_FATAL, @@ -905,7 +914,7 @@ ssh_private_key _privatekey_from_file(void *session, const char *filename, #elif defined HAVE_LIBCRYPTO rsa = PEM_read_bio_RSAPrivateKey(bio, NULL, NULL, NULL); - BIO_free(bio); + BIO_free(bio); if (rsa == NULL) { ssh_set_error(session, SSH_FATAL, @@ -917,9 +926,9 @@ ssh_private_key _privatekey_from_file(void *session, const char *filename, break; default: #ifdef HAVE_LIBGCRYPT - fclose(file); + fclose(file); #elif defined HAVE_LIBCRYPTO - BIO_free(bio); + BIO_free(bio); #endif ssh_set_error(session, SSH_FATAL, "Invalid private key type %d", type); return NULL; -- cgit