From 0c77b3c9c11da08ef013e5804df6f05d6deea09c Mon Sep 17 00:00:00 2001 From: Maxim Konovalov Date: Thu, 2 Dec 2004 13:12:43 +0000 Subject: [PATCH] o Terminate an endless loop sh -T goes into in dowait() around waitproc(). XXX from Tor: "The shell can also go into a similar loop if the child was killed by signal 127, since the shell would believe the child to have only stopped (WIFSTOPPED() macro returns nonzero value). Disallowing signals 127 and 128 will fix that problem." See kern/19402 for details. PR: bin/66242 Submitted by: tegge Analysis and testcase by: demon MFC after: 3 weeks --- bin/sh/jobs.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bin/sh/jobs.c b/bin/sh/jobs.c index 3c9ebeab6f7..8c19d227c84 100644 --- a/bin/sh/jobs.c +++ b/bin/sh/jobs.c @@ -926,7 +926,8 @@ dowait(int block, struct job *job) in_dowait--; if (breakwaitcmd != 0) { breakwaitcmd = 0; - return -1; + if (pid <= 0) + return -1; } if (pid <= 0) return pid;