SCP: relative path didn't work
authorDaniel Stenberg <daniel@haxx.se>
Fri, 21 Dec 2012 13:38:33 +0000 (14:38 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 21 Dec 2012 13:41:54 +0000 (14:41 +0100)
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

lib/ssh.c

index cb743eb..1cc4bcd 100644 (file)
--- 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);
   }