From: Daniel Stenberg Date: Mon, 3 Jan 2011 12:34:13 +0000 (+0100) Subject: SSH: avoid PATH_MAX with alloc X-Git-Tag: curl-7_21_4~105 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=45cea7196870f2b5e7096a619dc1a9725295ca1a;p=thirdparty%2Fcurl.git SSH: avoid PATH_MAX with alloc We cannot assume that PATH_MAX will be enough for the remote path name so allocating room for it is the only sensible approach. --- diff --git a/lib/ssh.c b/lib/ssh.c index 0ea814faa0..a0ca4c5218 100644 --- 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; }