diff --git a/src/syncterm/conn.c b/src/syncterm/conn.c index 660d938a0575172f75794d6e628f2fc263fc722b..3e6047b592c9f682537fba7df9fcdf5b1537878f 100644 --- a/src/syncterm/conn.c +++ b/src/syncterm/conn.c @@ -294,8 +294,10 @@ int conn_connect(struct bbslist *bbs) case CONN_TYPE_SSH: { int off=1; int status; + char password[MAX_PASSWD_LEN+1]; ssh_active=FALSE; + status=cl.CreateSession(&ssh_session, CRYPT_UNUSED, CRYPT_SESSION_SSH); if(cryptStatusError(status)) { char str[1024]; @@ -307,6 +309,8 @@ int conn_connect(struct bbslist *bbs) /* we need to disable Nagle on the socket. */ setsockopt(conn_socket, IPPROTO_TCP, TCP_NODELAY, ( char * )&off, sizeof ( off ) ); + SAFECOPY(password,bbs->password); + /* Pass socket to cryptlib */ status=cl.SetAttribute(ssh_session, CRYPT_SESSINFO_NETWORKSOCKET, conn_socket); if(cryptStatusError(status)) { @@ -324,6 +328,10 @@ int conn_connect(struct bbslist *bbs) uifcmsg("Error setting username",str); return(-1); } + + if(!password[0]) + uifcinput("Password",MAX_PASSWD_LEN,password,K_PASSWORD,"Incorrect password. Try again."); + status=cl.SetAttributeString(ssh_session, CRYPT_SESSINFO_PASSWORD, passwd, strlen(passwd)); if(cryptStatusError(status)) { char str[1024]; @@ -336,9 +344,12 @@ int conn_connect(struct bbslist *bbs) status=cl.SetAttribute(ssh_session, CRYPT_SESSINFO_ACTIVE, 1); if(cryptStatusError(status)) { char str[1024]; + sprintf(str,"Error %d activating session",status); uifcmsg("Error activating session",str); return(-1); + } + break; } ssh_active=TRUE;