diff options
author | djm@openbsd.org <djm@openbsd.org> | 2019-11-01 03:54:33 +0000 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2019-11-01 14:56:38 +1100 |
commit | 4332b4fe49360679647a8705bc08f4e81323f6b4 (patch) | |
tree | f799d147e78be644cab1a9596cb4fedcd8d9dc37 | |
parent | 03f9205f0fb49ea2507eacc143737a8511ae5a4e (diff) |
upstream: fix a race condition in the SIGCHILD handler that could turn
in to a kill(-1); bz3084, reported by Gao Rui, ok dtucker@
OpenBSD-Commit-ID: ac2742e04a69d4c34223505b6a32f6d686e18896
-rw-r--r-- | sftp.c | 11 |
1 files changed, 7 insertions, 4 deletions
@@ -1,4 +1,4 @@ -/* $OpenBSD: sftp.c,v 1.195 2019/10/02 00:42:30 djm Exp $ */ +/* $OpenBSD: sftp.c,v 1.196 2019/11/01 03:54:33 djm Exp $ */ /* * Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org> * @@ -220,9 +220,12 @@ static const struct CMD cmds[] = { static void killchild(int signo) { - if (sshpid > 1) { - kill(sshpid, SIGTERM); - waitpid(sshpid, NULL, 0); + pid_t pid; + + pid = sshpid; + if (pid > 1) { + kill(pid, SIGTERM); + waitpid(pid, NULL, 0); } _exit(1); |