summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordtucker <dtucker@openbsd.org>2019-06-07 03:47:12 +0000
committerdtucker <dtucker@openbsd.org>2019-06-07 03:47:12 +0000
commit1bbc33e7e1773e6a63541f26c2a12f904b6d0960 (patch)
treeea621ff2fb3f078fcb34046288e39e652e861482
parentConvert openssl(1) gendsa to the newer style of option handling (diff)
downloadwireguard-openbsd-1bbc33e7e1773e6a63541f26c2a12f904b6d0960.tar.xz
wireguard-openbsd-1bbc33e7e1773e6a63541f26c2a12f904b6d0960.zip
Check for user@host when parsing sftp target. This allows user@[1.2.3.4]
to work without a path in addition to with one. bz#2999, ok djm@
-rw-r--r--usr.bin/ssh/sftp.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/usr.bin/ssh/sftp.c b/usr.bin/ssh/sftp.c
index ce0df52749d..b81055f6275 100644
--- a/usr.bin/ssh/sftp.c
+++ b/usr.bin/ssh/sftp.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sftp.c,v 1.191 2019/06/06 05:13:13 otto Exp $ */
+/* $OpenBSD: sftp.c,v 1.192 2019/06/07 03:47:12 dtucker Exp $ */
/*
* Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org>
*
@@ -2477,12 +2477,17 @@ main(int argc, char **argv)
port = tmp;
break;
default:
+ /* Try with user, host and path. */
if (parse_user_host_path(*argv, &user, &host,
- &file1) == -1) {
- /* Treat as a plain hostname. */
- host = xstrdup(*argv);
- host = cleanhostname(host);
- }
+ &file1) == 0)
+ break;
+ /* Try with user and host. */
+ if (parse_user_host_port(*argv, &user, &host, NULL)
+ == 0)
+ break;
+ /* Treat as a plain hostname. */
+ host = xstrdup(*argv);
+ host = cleanhostname(host);
break;
}
file2 = *(argv + 1);