From 45cea7196870f2b5e7096a619dc1a9725295ca1a Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 3 Jan 2011 13:34:13 +0100 Subject: [PATCH] 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. --- lib/ssh.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/ssh.c b/lib/ssh.c index 0ea814faa..a0ca4c521 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; }