summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorOliver Stöneberg <oliverst@online.de>2011-05-02 09:25:12 -0700
committerAndreas Schneider <asn@cryptomilk.org>2011-05-17 20:59:55 +0200
commita6dda5fefdca6f39b7f90ee0e8ba3cfc9bae7345 (patch)
tree60f096eea703908273fdb349d1a99004b8484afd /src
parentda8356b477fc94a18b8098f021a25d7e24ee79de (diff)
downloadlibssh-a6dda5fefdca6f39b7f90ee0e8ba3cfc9bae7345.tar.gz
libssh-a6dda5fefdca6f39b7f90ee0e8ba3cfc9bae7345.tar.xz
libssh-a6dda5fefdca6f39b7f90ee0e8ba3cfc9bae7345.zip
keyfiles: Use BIO* in _privatekey_from_file().
(cherry picked from commit 82df5dc2083a6f7234d1545bd671ee1b5b4680b6)
Diffstat (limited to 'src')
-rw-r--r--src/keyfiles.c17
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;