- djm@cvs.openbsd.org 2003/06/04 12:40:39

[scp.c]
     kill ssh process upon receipt of signal, bz #241.
     based on patch from esb AT hawaii.edu; ok markus@
This commit is contained in:
Damien Miller 2003-06-04 22:51:24 +10:00
parent 65d1f5765f
commit b69aaa8db7
2 changed files with 19 additions and 3 deletions

View File

@ -20,6 +20,10 @@
- djm@cvs.openbsd.org 2003/06/04 12:18:49 - djm@cvs.openbsd.org 2003/06/04 12:18:49
[scp.c] [scp.c]
ansify; ok markus@ ansify; ok markus@
- djm@cvs.openbsd.org 2003/06/04 12:40:39
[scp.c]
kill ssh process upon receipt of signal, bz #241.
based on patch from esb AT hawaii.edu; ok markus@
- (djm) Update to fix of bug #584: lock card before return. - (djm) Update to fix of bug #584: lock card before return.
From larsch@trustcenter.de From larsch@trustcenter.de
@ -450,4 +454,4 @@
- Fix sshd BindAddress and -b options for systems using fake-getaddrinfo. - Fix sshd BindAddress and -b options for systems using fake-getaddrinfo.
Report from murple@murple.net, diagnosis from dtucker@zip.com.au Report from murple@murple.net, diagnosis from dtucker@zip.com.au
$Id: ChangeLog,v 1.2778 2003/06/04 12:51:08 djm Exp $ $Id: ChangeLog,v 1.2779 2003/06/04 12:51:24 djm Exp $

16
scp.c
View File

@ -71,7 +71,7 @@
*/ */
#include "includes.h" #include "includes.h"
RCSID("$OpenBSD: scp.c,v 1.104 2003/06/04 12:18:49 djm Exp $"); RCSID("$OpenBSD: scp.c,v 1.105 2003/06/04 12:40:39 djm Exp $");
#include "xmalloc.h" #include "xmalloc.h"
#include "atomicio.h" #include "atomicio.h"
@ -107,7 +107,16 @@ int showprogress = 1;
char *ssh_program = _PATH_SSH_PROGRAM; char *ssh_program = _PATH_SSH_PROGRAM;
/* This is used to store the pid of ssh_program */ /* This is used to store the pid of ssh_program */
pid_t do_cmd_pid; pid_t do_cmd_pid = -1;
static void
killchild(int signo)
{
if (do_cmd_pid > 1)
kill(do_cmd_pid, signo);
_exit(1);
}
/* /*
* This function executes the given command as the specified user on the * This function executes the given command as the specified user on the
@ -170,6 +179,9 @@ do_cmd(char *host, char *remuser, char *cmd, int *fdin, int *fdout, int argc)
*fdout = pin[1]; *fdout = pin[1];
close(pout[1]); close(pout[1]);
*fdin = pout[0]; *fdin = pout[0];
signal(SIGTERM, killchild);
signal(SIGINT, killchild);
signal(SIGHUP, killchild);
return 0; return 0;
} }