]> granicus.if.org Git - curl/commitdiff
Fixed a memory leak.
authorDan Fandrich <dan@coneharvesters.com>
Thu, 15 Mar 2007 00:04:41 +0000 (00:04 +0000)
committerDan Fandrich <dan@coneharvesters.com>
Thu, 15 Mar 2007 00:04:41 +0000 (00:04 +0000)
lib/ssh.c

index 8cc5d63c026bea2a914a8f5c974e1d0266a797df..2876a30c0a5672bc63dc442437c572176d2e925d 100644 (file)
--- a/lib/ssh.c
+++ b/lib/ssh.c
@@ -352,6 +352,12 @@ CURLcode Curl_ssh_connect(struct connectdata *conn, bool *done)
    */
   authlist = libssh2_userauth_list(ssh->ssh_session, ssh->user,
                                    strlen(ssh->user));
+  if (!authlist) {
+    libssh2_session_free(ssh->ssh_session);
+    ssh->ssh_session = NULL;
+    Curl_safefree(ssh->path);
+    return CURLE_OUT_OF_MEMORY;
+  }
   infof(data, "SSH authentication methods available: %s\n", authlist);
 
   /*
@@ -410,6 +416,8 @@ CURLcode Curl_ssh_connect(struct connectdata *conn, bool *done)
       infof(conn->data, "Initialized keyboard interactive authentication\n");
     }
   }
+  Curl_safefree((void *)authlist);
+  authlist = NULL;
 
   if (!authed) {
     failf(data, "Authentication failure\n");
@@ -460,7 +468,7 @@ CURLcode Curl_ssh_connect(struct connectdata *conn, bool *done)
     }
   }
 
-  /* Check for /~/ , indicating realative to the users home directory */
+  /* Check for /~/ , indicating relative to the user's home directory */
   if (conn->protocol == PROT_SCP) {
     real_path = (char *)malloc(working_path_len+1);
     if (real_path == NULL) {
@@ -546,7 +554,7 @@ CURLcode Curl_scp_do(struct connectdata *conn, bool *done)
   }
   else {
     /*
-     * We must check the remote file, if it is a directory no vaules will
+     * We must check the remote file; if it is a directory no values will
      * be set in sb
      */
     curl_off_t bytecount;
@@ -782,7 +790,7 @@ CURLcode Curl_sftp_do(struct connectdata *conn, bool *done)
                                 attrs.filesize);
           }
           if (attrs.flags & LIBSSH2_SFTP_ATTR_ACMODTIME) {
-            const char *months[12] = {
+            static const char * const months[12] = {
               "Jan", "Feb", "Mar", "Apr", "May", "Jun",
               "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
             struct tm *nowParts;