mirror of
https://github.com/PowerShell/openssh-portable.git
synced 2025-07-29 08:44:52 +02:00
upstream: preserve quoting of Subsystem commands and arguments.
This may change behaviour of exotic configurations, but the most common subsystem configuration (sftp-server) is unlikely to be affected. OpenBSD-Commit-ID: 8ffa296aeca981de5b0945242ce75aa6dee479bf
This commit is contained in:
parent
52dfe3c72d
commit
e19069c9fa
24
servconf.c
24
servconf.c
@ -1,4 +1,4 @@
|
|||||||
/* $OpenBSD: servconf.c,v 1.398 2023/09/06 23:21:36 djm Exp $ */
|
/* $OpenBSD: servconf.c,v 1.399 2023/09/06 23:23:53 djm Exp $ */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
||||||
* All rights reserved
|
* All rights reserved
|
||||||
@ -1960,21 +1960,19 @@ process_server_config_line_depth(ServerOptions *options, char *line,
|
|||||||
}
|
}
|
||||||
options->subsystem_name[options->num_subsystems] = xstrdup(arg);
|
options->subsystem_name[options->num_subsystems] = xstrdup(arg);
|
||||||
arg = argv_next(&ac, &av);
|
arg = argv_next(&ac, &av);
|
||||||
if (!arg || *arg == '\0')
|
if (!arg || *arg == '\0') {
|
||||||
fatal("%s line %d: Missing subsystem command.",
|
fatal("%s line %d: Missing subsystem command.",
|
||||||
filename, linenum);
|
filename, linenum);
|
||||||
options->subsystem_command[options->num_subsystems] = xstrdup(arg);
|
|
||||||
|
|
||||||
/* Collect arguments (separate to executable) */
|
|
||||||
p = xstrdup(arg);
|
|
||||||
len = strlen(p) + 1;
|
|
||||||
while ((arg = argv_next(&ac, &av)) != NULL) {
|
|
||||||
len += 1 + strlen(arg);
|
|
||||||
p = xreallocarray(p, 1, len);
|
|
||||||
strlcat(p, " ", len);
|
|
||||||
strlcat(p, arg, len);
|
|
||||||
}
|
}
|
||||||
options->subsystem_args[options->num_subsystems] = p;
|
options->subsystem_command[options->num_subsystems] =
|
||||||
|
xstrdup(arg);
|
||||||
|
/* Collect arguments (separate to executable) */
|
||||||
|
arg = argv_assemble(1, &arg); /* quote command correctly */
|
||||||
|
arg2 = argv_assemble(ac, av); /* rest of command */
|
||||||
|
xasprintf(&options->subsystem_args[options->num_subsystems],
|
||||||
|
"%s %s", arg, arg2);
|
||||||
|
free(arg2);
|
||||||
|
argv_consume(&ac);
|
||||||
options->num_subsystems++;
|
options->num_subsystems++;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user