diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/keyfiles.c | 17 |
1 files 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; |