aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Dunn <amdunn@gmail.com>2014-01-21 08:19:31 -0600
committerAndreas Schneider <asn@cryptomilk.org>2014-01-21 16:08:12 +0100
commitf78a74c1604af229bf0d5dacdb4aa6a98c6a1560 (patch)
treed10970b067f71999cd0b0280673596aff0e885b2
parentb3b3045a816ab750ae37273f6cb1ab60062d5b6e (diff)
downloadlibssh-f78a74c1604af229bf0d5dacdb4aa6a98c6a1560.tar.gz
libssh-f78a74c1604af229bf0d5dacdb4aa6a98c6a1560.tar.xz
libssh-f78a74c1604af229bf0d5dacdb4aa6a98c6a1560.zip
Import keys during ssh_bind_accept_fd
Signed-off-by: Alan Dunn <amdunn@gmail.com> Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
-rw-r--r--src/bind.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/bind.c b/src/bind.c
index e06cb7e3..5234e5b4 100644
--- a/src/bind.c
+++ b/src/bind.c
@@ -382,7 +382,7 @@ void ssh_bind_free(ssh_bind sshbind){
}
int ssh_bind_accept_fd(ssh_bind sshbind, ssh_session session, socket_t fd){
- int i;
+ int i, rc;
if (session == NULL){
ssh_set_error(sshbind, SSH_FATAL,"session is null");
@@ -424,6 +424,16 @@ int ssh_bind_accept_fd(ssh_bind sshbind, ssh_session session, socket_t fd){
ssh_socket_set_fd(session->socket, fd);
ssh_socket_get_poll_handle_out(session->socket);
+ /* We must try to import any keys that could be imported in case
+ * we are not using ssh_bind_listen (which is the other place
+ * where keys can be imported) on this ssh_bind and are instead
+ * only using ssh_bind_accept_fd to manage sockets ourselves.
+ */
+ rc = ssh_bind_import_keys(sshbind);
+ if (rc != SSH_OK) {
+ return SSH_ERROR;
+ }
+
#ifdef HAVE_ECC
if (sshbind->ecdsa) {
session->srv.ecdsa_key = ssh_key_dup(sshbind->ecdsa);