mirror of git://anongit.mindrot.org/openssh.git
- djm@cvs.openbsd.org 2011/01/06 23:01:35
[sshconnect.c] reset SIGCHLD handler to SIG_DFL when execuring LocalCommand; ok markus@
This commit is contained in:
parent
7d06b00032
commit
ed3a8eb65f
|
@ -13,6 +13,10 @@
|
||||||
[regress/Makefile regress/host-expand.sh]
|
[regress/Makefile regress/host-expand.sh]
|
||||||
regress test for LocalCommand %n expansion from bert.wesarg AT
|
regress test for LocalCommand %n expansion from bert.wesarg AT
|
||||||
googlemail.com; ok markus@
|
googlemail.com; ok markus@
|
||||||
|
- djm@cvs.openbsd.org 2011/01/06 23:01:35
|
||||||
|
[sshconnect.c]
|
||||||
|
reset SIGCHLD handler to SIG_DFL when execuring LocalCommand;
|
||||||
|
ok markus@
|
||||||
|
|
||||||
20110106
|
20110106
|
||||||
- (djm) OpenBSD CVS Sync
|
- (djm) OpenBSD CVS Sync
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: sshconnect.c,v 1.230 2010/12/14 11:59:06 markus Exp $ */
|
/* $OpenBSD: sshconnect.c,v 1.231 2011/01/06 23:01:35 djm 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
|
||||||
|
@ -1259,6 +1259,7 @@ ssh_local_cmd(const char *args)
|
||||||
char *shell;
|
char *shell;
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
int status;
|
int status;
|
||||||
|
void (*osighand)(int);
|
||||||
|
|
||||||
if (!options.permit_local_command ||
|
if (!options.permit_local_command ||
|
||||||
args == NULL || !*args)
|
args == NULL || !*args)
|
||||||
|
@ -1267,6 +1268,7 @@ ssh_local_cmd(const char *args)
|
||||||
if ((shell = getenv("SHELL")) == NULL || *shell == '\0')
|
if ((shell = getenv("SHELL")) == NULL || *shell == '\0')
|
||||||
shell = _PATH_BSHELL;
|
shell = _PATH_BSHELL;
|
||||||
|
|
||||||
|
osighand = signal(SIGCHLD, SIG_DFL);
|
||||||
pid = fork();
|
pid = fork();
|
||||||
if (pid == 0) {
|
if (pid == 0) {
|
||||||
debug3("Executing %s -c \"%s\"", shell, args);
|
debug3("Executing %s -c \"%s\"", shell, args);
|
||||||
|
@ -1279,6 +1281,7 @@ ssh_local_cmd(const char *args)
|
||||||
while (waitpid(pid, &status, 0) == -1)
|
while (waitpid(pid, &status, 0) == -1)
|
||||||
if (errno != EINTR)
|
if (errno != EINTR)
|
||||||
fatal("Couldn't wait for child: %s", strerror(errno));
|
fatal("Couldn't wait for child: %s", strerror(errno));
|
||||||
|
signal(SIGCHLD, osighand);
|
||||||
|
|
||||||
if (!WIFEXITED(status))
|
if (!WIFEXITED(status))
|
||||||
return (1);
|
return (1);
|
||||||
|
|
Loading…
Reference in New Issue