]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
upstream: correctly restore sigprocmask around ppoll() reported
authordjm@openbsd.org <djm@openbsd.org>
Tue, 30 Apr 2024 02:14:10 +0000 (02:14 +0000)
committerDamien Miller <djm@mindrot.org>
Tue, 30 Apr 2024 02:23:10 +0000 (12:23 +1000)
by Tõivo Leedjärv; ok deraadt@

OpenBSD-Commit-ID: c0c0f89de5294a166578f071eade2501929c4686

clientloop.c
serverloop.c

index be8bb5fc1f2935195162bfd9c100e5feb47fecdb..8ea2ada421669b53613ce8dda033bb7b9822ffe2 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: clientloop.c,v 1.404 2024/04/30 02:10:49 djm Exp $ */
+/* $OpenBSD: clientloop.c,v 1.405 2024/04/30 02:14:10 djm Exp $ */
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -1585,7 +1585,7 @@ client_loop(struct ssh *ssh, int have_pty, int escape_char_arg,
                client_wait_until_can_do_something(ssh, &pfd, &npfd_alloc,
                    &npfd_active, channel_did_enqueue, &osigset,
                    &conn_in_ready, &conn_out_ready);
-               if (sigprocmask(SIG_UNBLOCK, &bsigset, &osigset) == -1)
+               if (sigprocmask(SIG_SETMASK, &osigset, NULL) == -1)
                        error_f("osigset sigprocmask: %s", strerror(errno));
 
                if (quit_pending)
index f3683c2e4a6d38a2e4cdc1a9790780f84f61cc89..94c8943a6168c427bb97a94895f33a9fd37aba00 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: serverloop.c,v 1.237 2023/08/21 04:59:54 djm Exp $ */
+/* $OpenBSD: serverloop.c,v 1.238 2024/04/30 02:14:10 djm Exp $ */
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -380,7 +380,7 @@ server_loop2(struct ssh *ssh, Authctxt *authctxt)
                wait_until_can_do_something(ssh, connection_in, connection_out,
                    &pfd, &npfd_alloc, &npfd_active, &osigset,
                    &conn_in_ready, &conn_out_ready);
-               if (sigprocmask(SIG_UNBLOCK, &bsigset, &osigset) == -1)
+               if (sigprocmask(SIG_SETMASK, &osigset, NULL) == -1)
                        error_f("osigset sigprocmask: %s", strerror(errno));
 
                if (received_sigterm) {