]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
upstream: fix a race condition in the SIGCHILD handler that could turn
authordjm@openbsd.org <djm@openbsd.org>
Fri, 1 Nov 2019 03:54:33 +0000 (03:54 +0000)
committerDamien Miller <djm@mindrot.org>
Fri, 1 Nov 2019 03:56:38 +0000 (14:56 +1100)
in to a kill(-1); bz3084, reported by Gao Rui, ok dtucker@

OpenBSD-Commit-ID: ac2742e04a69d4c34223505b6a32f6d686e18896

sftp.c

diff --git a/sftp.c b/sftp.c
index b66037f165df1244060c84243f29f3819efd951a..54538ff96316484a35214d6dd368bf8c9f01e7a1 100644 (file)
--- a/sftp.c
+++ b/sftp.c
@@ -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);