upstream: allow arguments to sftp -D option, e.g. sftp -D

"/usr/libexec/sftp-server -el debug3"

ok markus@

OpenBSD-Commit-ID: 5a002b9f3a7aef2731fc0ffa9c921cf15f38ecce
This commit is contained in:
djm@openbsd.org 2022-06-27 21:41:55 +00:00 committed by Damien Miller
parent 2369a28101
commit 2a822f2930
2 changed files with 15 additions and 11 deletions

10
sftp.1
View File

@ -1,4 +1,4 @@
.\" $OpenBSD: sftp.1,v 1.140 2022/03/31 17:27:27 naddy Exp $ .\" $OpenBSD: sftp.1,v 1.141 2022/06/27 21:41:55 djm Exp $
.\" .\"
.\" Copyright (c) 2001 Damien Miller. All rights reserved. .\" Copyright (c) 2001 Damien Miller. All rights reserved.
.\" .\"
@ -22,7 +22,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.Dd $Mdocdate: March 31 2022 $ .Dd $Mdocdate: June 27 2022 $
.Dt SFTP 1 .Dt SFTP 1
.Os .Os
.Sh NAME .Sh NAME
@ -34,7 +34,7 @@
.Op Fl B Ar buffer_size .Op Fl B Ar buffer_size
.Op Fl b Ar batchfile .Op Fl b Ar batchfile
.Op Fl c Ar cipher .Op Fl c Ar cipher
.Op Fl D Ar sftp_server_path .Op Fl D Ar sftp_server_command
.Op Fl F Ar ssh_config .Op Fl F Ar ssh_config
.Op Fl i Ar identity_file .Op Fl i Ar identity_file
.Op Fl J Ar destination .Op Fl J Ar destination
@ -167,10 +167,12 @@ flag).
Selects the cipher to use for encrypting the data transfers. Selects the cipher to use for encrypting the data transfers.
This option is directly passed to This option is directly passed to
.Xr ssh 1 . .Xr ssh 1 .
.It Fl D Ar sftp_server_path .It Fl D Ar sftp_server_command
Connect directly to a local sftp server Connect directly to a local sftp server
(rather than via (rather than via
.Xr ssh 1 ) . .Xr ssh 1 ) .
A command and arguments may be specified, for example
.Qq /path/sftp-server -el debug3 .
This option may be useful in debugging the client and server. This option may be useful in debugging the client and server.
.It Fl F Ar ssh_config .It Fl F Ar ssh_config
Specifies an alternative Specifies an alternative

16
sftp.c
View File

@ -1,4 +1,4 @@
/* $OpenBSD: sftp.c,v 1.216 2022/05/13 06:31:50 djm Exp $ */ /* $OpenBSD: sftp.c,v 1.217 2022/06/27 21:41:55 djm Exp $ */
/* /*
* Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org> * Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org>
* *
@ -2387,8 +2387,8 @@ usage(void)
int int
main(int argc, char **argv) main(int argc, char **argv)
{ {
int in, out, ch, err, tmp, port = -1, noisy = 0; int r, in, out, ch, err, tmp, port = -1, noisy = 0;
char *host = NULL, *user, *cp, *file2 = NULL; char *host = NULL, *user, *cp, **cpp, *file2 = NULL;
int debug_level = 0; int debug_level = 0;
char *file1 = NULL, *sftp_server = NULL; char *file1 = NULL, *sftp_server = NULL;
char *ssh_program = _PATH_SSH_PROGRAM, *sftp_direct = NULL; char *ssh_program = _PATH_SSH_PROGRAM, *sftp_direct = NULL;
@ -2586,10 +2586,12 @@ main(int argc, char **argv)
connect_to_server(ssh_program, args.list, &in, &out); connect_to_server(ssh_program, args.list, &in, &out);
} else { } else {
args.list = NULL; if ((r = argv_split(sftp_direct, &tmp, &cpp, 1)) != 0)
addargs(&args, "sftp-server"); fatal_r(r, "Parse -D arguments");
if (cpp[0] == 0)
connect_to_server(sftp_direct, args.list, &in, &out); fatal("No sftp server specified via -D");
connect_to_server(cpp[0], cpp, &in, &out);
argv_free(cpp, tmp);
} }
freeargs(&args); freeargs(&args);