]> granicus.if.org Git - curl/commitdiff
Fixed a NULL pointer dereference on sftp initialization failure.
authorDan Fandrich <dan@coneharvesters.com>
Wed, 14 Mar 2007 02:04:17 +0000 (02:04 +0000)
committerDan Fandrich <dan@coneharvesters.com>
Wed, 14 Mar 2007 02:04:17 +0000 (02:04 +0000)
Added some more debug logs.

lib/ssh.c

index 1846945a7b5264c318b8e1042dfc0b1f65a0f589..8cc5d63c026bea2a914a8f5c974e1d0266a797df 100644 (file)
--- 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;