aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2011-01-03 13:34:13 +0100
committerDaniel Stenberg <daniel@haxx.se>2011-01-03 13:36:45 +0100
commit45cea7196870f2b5e7096a619dc1a9725295ca1a (patch)
tree0d48639dca49bce675c23d50e2c11c686ae67ef2 /lib
parent569202c9a4efa15831cc260cea44d2756fbcac59 (diff)
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.
Diffstat (limited to 'lib')
-rw-r--r--lib/ssh.c12
1 files 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;
}