The init program doesn't set up the proper signal disposition for
the process (sh) it creates to run /etc/rc. While all signal handlers are
reset to SIG_DFL, the signal mask is left unchanged causing SIGHUP and
SIGTERM to be masked in all daemons started from /etc/rc.
AUTHOR: Paul Kranenburg (pk@cs.few.eur.nl)
386BSD-Patchkit: patch00014
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
+ *
+ * PATCHES MAGIC LEVEL PATCH THAT GOT US HERE
+ * -------------------- ----- ----------------------
+ * CURRENT PATCH LEVEL: 1 00014
+ * -------------------- ----- ----------------------
+ *
+ * 04 Sep 92 Paul Kranenburg Fixed kill -1 and kill -15 for
+ * daemons started from /etc/rc.
signal(SIGHUP, SIG_DFL); signal(SIGINT, SIG_DFL); \
signal(SIGTERM, SIG_DFL); signal(SIGALRM, SIG_DFL); \
signal(SIGTSTP, SIG_DFL); signal(SIGCHLD, SIG_DFL); \
signal(SIGHUP, SIG_DFL); signal(SIGINT, SIG_DFL); \
signal(SIGTERM, SIG_DFL); signal(SIGALRM, SIG_DFL); \
signal(SIGTSTP, SIG_DFL); signal(SIGCHLD, SIG_DFL); \
- signal(SIGTTIN, SIG_DFL); signal(SIGTTOU, SIG_DFL);
+ signal(SIGTTIN, SIG_DFL); signal(SIGTTOU, SIG_DFL); \
+ sigsetmask( 0); /* 04 Sep 92*/
/* SIGHUP: reread /etc/ttys */
void
/* SIGHUP: reread /etc/ttys */
void
login_tty(open("/dev/console", 2));
writes(2, "init FATAL error: ");
perror(s);
login_tty(open("/dev/console", 2));
writes(2, "init FATAL error: ");
perror(s);
+ _exit(1); /* 04 Sep 92*/