From: Daniel Stenberg Date: Fri, 21 Dec 2012 13:38:33 +0000 (+0100) Subject: SCP: relative path didn't work X-Git-Tag: curl-7_29_0~200 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c30c557e4d2089953339fc669474091bdd505651;p=curl SCP: relative path didn't work When prefixing a path with /~/ it is supposed to be used relative to the user's home directory but it didn't work. Now we cut off the entire three byte sequenct "/~/" which seems to be how OpenSSH does it. Bug: http://curl.haxx.se/bug/view.cgi?id=1173 Reported by: Balaji Parasuram --- diff --git a/lib/ssh.c b/lib/ssh.c index cb743eb41..1cc4bcd4c 100644 --- a/lib/ssh.c +++ b/lib/ssh.c @@ -422,9 +422,9 @@ static CURLcode ssh_getworkingpath(struct connectdata *conn, free(working_path); return CURLE_OUT_OF_MEMORY; } - if((working_path_len > 1) && (working_path[1] == '~')) - /* It is referenced to the home directory, so strip the leading '/' */ - memcpy(real_path, working_path+1, 1 + working_path_len-1); + if((working_path_len > 3) && (!memcmp(working_path, "/~/", 3))) + /* It is referenced to the home directory, so strip the leading '/~/' */ + memcpy(real_path, working_path+3, 4 + working_path_len-3); else memcpy(real_path, working_path, 1 + working_path_len); }