Module Name: src
Committed By: kre
Date: Thu Feb 6 20:08:28 UTC 2020
Modified Files:
src/bin/sh: main.c
Log Message:
Actually, the issue with bash (in previous) is more likely that the
SIGCHLD is blocked rather than ignored. We want neither. Make sure
SIGCHLD is unblocked as well as SIG_DFL.
XXX pullup -9
To generate a diff of this commit:
cvs rdiff -u -r1.83 -r1.84 src/bin/sh/main.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/bin/sh/main.c
diff -u src/bin/sh/main.c:1.83 src/bin/sh/main.c:1.84
--- src/bin/sh/main.c:1.83 Thu Feb 6 19:51:59 2020
+++ src/bin/sh/main.c Thu Feb 6 20:08:28 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: main.c,v 1.83 2020/02/06 19:51:59 kre Exp $ */
+/* $NetBSD: main.c,v 1.84 2020/02/06 20:08:28 kre Exp $ */
/*-
* Copyright (c) 1991, 1993
@@ -42,7 +42,7 @@ __COPYRIGHT("@(#) Copyright (c) 1991, 19
#if 0
static char sccsid[] = "@(#)main.c 8.7 (Berkeley) 7/19/95";
#else
-__RCSID("$NetBSD: main.c,v 1.83 2020/02/06 19:51:59 kre Exp $");
+__RCSID("$NetBSD: main.c,v 1.84 2020/02/06 20:08:28 kre Exp $");
#endif
#endif /* not lint */
@@ -108,6 +108,7 @@ main(int argc, char **argv)
char *shinit;
uid_t uid;
gid_t gid;
+ sigset_t sigs;
/*
* If we happen to be invoked with SIGCHLD ignored, we cannot
@@ -117,6 +118,12 @@ main(int argc, char **argv)
* footpath for someone else to fall into...
*/
(void)signal(SIGCHLD, SIG_DFL);
+ /*
+ * Similarly, SIGCHLD must not be blocked
+ */
+ sigemptyset(&sigs);
+ sigaddset(&sigs, SIGCHLD);
+ sigprocmask(SIG_UNBLOCK, &sigs, NULL);
uid = getuid();
gid = getgid();