From 9cb69f77f1a84706c44984444aaa8c430c50121c Mon Sep 17 00:00:00 2001 From: Dan Fandrich Date: Wed, 14 Mar 2007 02:04:17 +0000 Subject: Fixed a NULL pointer dereference on sftp initialization failure. Added some more debug logs. --- lib/ssh.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'lib/ssh.c') diff --git a/lib/ssh.c b/lib/ssh.c index 1846945a7..8cc5d63c0 100644 --- a/lib/ssh.c +++ b/lib/ssh.c @@ -352,6 +352,7 @@ CURLcode Curl_ssh_connect(struct connectdata *conn, bool *done) */ authlist = libssh2_userauth_list(ssh->ssh_session, ssh->user, strlen(ssh->user)); + infof(data, "SSH authentication methods available: %s\n", authlist); /* * Check the supported auth types in the order I feel is most secure with the @@ -375,20 +376,26 @@ CURLcode Curl_ssh_connect(struct connectdata *conn, bool *done) curl_free(home); + infof(conn->data, "Using ssh public key file %s\n", rsa_pub); + infof(conn->data, "Using ssh private key file %s\n", rsa); + if (rsa_pub[0]) { /* The function below checks if the files exists, no need to stat() here. */ if (libssh2_userauth_publickey_fromfile(ssh->ssh_session, ssh->user, rsa_pub, rsa, "") == 0) { authed = TRUE; + infof(conn->data, "Initialized SSH public key authentication\n"); } } } if (!authed && (data->set.ssh_auth_types & CURLSSH_AUTH_PASSWORD) && (strstr(authlist, "password") != NULL)) { - if (!libssh2_userauth_password(ssh->ssh_session, ssh->user, ssh->passwd)) + if (!libssh2_userauth_password(ssh->ssh_session, ssh->user, ssh->passwd)) { authed = TRUE; + infof(conn->data, "Initialized password authentication\n"); + } } if (!authed && (data->set.ssh_auth_types & CURLSSH_AUTH_HOST) && (strstr(authlist, "hostbased") != NULL)) { @@ -400,6 +407,7 @@ CURLcode Curl_ssh_connect(struct connectdata *conn, bool *done) strlen(ssh->user), &kbd_callback) == 0) { authed = TRUE; + infof(conn->data, "Initialized keyboard interactive authentication\n"); } } @@ -424,8 +432,6 @@ CURLcode Curl_ssh_connect(struct connectdata *conn, bool *done) ssh->sftp_session = libssh2_sftp_init(ssh->ssh_session); if (ssh->sftp_session == NULL) { failf(data, "Failure initialising sftp session\n"); - libssh2_sftp_shutdown(ssh->sftp_session); - ssh->sftp_session = NULL; libssh2_session_free(ssh->ssh_session); ssh->ssh_session = NULL; return CURLE_FAILED_INIT; -- cgit v1.2.3