mirror of
https://github.com/PowerShell/openssh-portable.git
synced 2025-07-31 01:35:11 +02:00
upstream commit
Do not prepend "exec" to the shell command run by "Match exec" in a config file. It's an unnecessary optimization from repurposed ProxyCommand code and prevents some things working with some shells. bz#2471, pointed out by res at qoxp.net. ok markus@ Upstream-ID: a1ead25ae336bfa15fb58d8c6b5589f85b4c33a3
This commit is contained in:
parent
8db134e7f4
commit
97e184e508
13
readconf.c
13
readconf.c
@ -1,4 +1,4 @@
|
|||||||
/* $OpenBSD: readconf.c,v 1.242 2015/10/07 15:59:12 djm Exp $ */
|
/* $OpenBSD: readconf.c,v 1.243 2015/10/25 23:14:03 dtucker Exp $ */
|
||||||
/*
|
/*
|
||||||
* Author: Tatu Ylonen <ylo@cs.hut.fi>
|
* Author: Tatu Ylonen <ylo@cs.hut.fi>
|
||||||
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
||||||
@ -442,7 +442,7 @@ default_ssh_port(void)
|
|||||||
static int
|
static int
|
||||||
execute_in_shell(const char *cmd)
|
execute_in_shell(const char *cmd)
|
||||||
{
|
{
|
||||||
char *shell, *command_string;
|
char *shell;
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
int devnull, status;
|
int devnull, status;
|
||||||
extern uid_t original_real_uid;
|
extern uid_t original_real_uid;
|
||||||
@ -450,12 +450,6 @@ execute_in_shell(const char *cmd)
|
|||||||
if ((shell = getenv("SHELL")) == NULL)
|
if ((shell = getenv("SHELL")) == NULL)
|
||||||
shell = _PATH_BSHELL;
|
shell = _PATH_BSHELL;
|
||||||
|
|
||||||
/*
|
|
||||||
* Use "exec" to avoid "sh -c" processes on some platforms
|
|
||||||
* (e.g. Solaris)
|
|
||||||
*/
|
|
||||||
xasprintf(&command_string, "exec %s", cmd);
|
|
||||||
|
|
||||||
/* Need this to redirect subprocess stdin/out */
|
/* Need this to redirect subprocess stdin/out */
|
||||||
if ((devnull = open(_PATH_DEVNULL, O_RDWR)) == -1)
|
if ((devnull = open(_PATH_DEVNULL, O_RDWR)) == -1)
|
||||||
fatal("open(/dev/null): %s", strerror(errno));
|
fatal("open(/dev/null): %s", strerror(errno));
|
||||||
@ -480,7 +474,7 @@ execute_in_shell(const char *cmd)
|
|||||||
|
|
||||||
argv[0] = shell;
|
argv[0] = shell;
|
||||||
argv[1] = "-c";
|
argv[1] = "-c";
|
||||||
argv[2] = command_string;
|
argv[2] = cmd;
|
||||||
argv[3] = NULL;
|
argv[3] = NULL;
|
||||||
|
|
||||||
execv(argv[0], argv);
|
execv(argv[0], argv);
|
||||||
@ -495,7 +489,6 @@ execute_in_shell(const char *cmd)
|
|||||||
fatal("%s: fork: %.100s", __func__, strerror(errno));
|
fatal("%s: fork: %.100s", __func__, strerror(errno));
|
||||||
|
|
||||||
close(devnull);
|
close(devnull);
|
||||||
free(command_string);
|
|
||||||
|
|
||||||
while (waitpid(pid, &status, 0) == -1) {
|
while (waitpid(pid, &status, 0) == -1) {
|
||||||
if (errno != EINTR && errno != EAGAIN)
|
if (errno != EINTR && errno != EAGAIN)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user