]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
SSH: avoid PATH_MAX with alloc
authorDaniel Stenberg <daniel@haxx.se>
Mon, 3 Jan 2011 12:34:13 +0000 (13:34 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 3 Jan 2011 12:36:45 +0000 (13:36 +0100)
We cannot assume that PATH_MAX will be enough for the remote path name
so allocating room for it is the only sensible approach.

lib/ssh.c

index 0ea814faa01ef9b696d23e4eea6251094619ac46..a0ca4c5218e81f3f8bfb029366dd75f68a5b45d9 100644 (file)
--- a/lib/ssh.c
+++ b/lib/ssh.c
@@ -1046,10 +1046,13 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
        */
       if(curl_strequal("pwd", sshc->quote_item->data)) {
         /* output debug output if that is requested */
-        char tmp[PATH_MAX+1];
-
-        snprintf(tmp, PATH_MAX, "257 \"%s\" is current directory.\n",
-                 sftp_scp->path);
+        char *tmp = aprintf("257 \"%s\" is current directory.\n",
+                            sftp_scp->path);
+        if(!tmp) {
+          result = CURLE_OUT_OF_MEMORY;
+          state(conn, SSH_SFTP_CLOSE);
+          break;
+        }
         if(data->set.verbose) {
           Curl_debug(data, CURLINFO_HEADER_OUT, (char *)"PWD\n", 4, conn);
           Curl_debug(data, CURLINFO_HEADER_IN, tmp, strlen(tmp), conn);
@@ -1058,6 +1061,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
            current directory can be read very similar to how it is read when
            using ordinary FTP. */
         result = Curl_client_write(conn, CLIENTWRITE_HEADER, tmp, strlen(tmp));
+        free(tmp);
         state(conn, SSH_SFTP_NEXT_QUOTE);
         break;
       }