summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael I. Bushnell <mib@gnu.org>1995-07-22 19:09:02 +0000
committerMichael I. Bushnell <mib@gnu.org>1995-07-22 19:09:02 +0000
commit63554c11f5deb5b42f0bcb9143e2c443602fa294 (patch)
tree0da50dcdd3e093d19432381ee4cc3b66055bb1a1
parentc4c0b23a31082ed180512f238a155d348c0b477e (diff)
(S_proc_setpgrp): Install bletcherous hack.
-rw-r--r--proc/pgrp.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/proc/pgrp.c b/proc/pgrp.c
index a0231c79..0601bb64 100644
--- a/proc/pgrp.c
+++ b/proc/pgrp.c
@@ -295,11 +295,21 @@ S_proc_setpgrp (struct proc *callerp,
pgid = p->p_pid;
pg = pgrp_find (pgid);
- if (p->p_pgrp->pg_session->s_sid == p->p_pid
- || p->p_pgrp->pg_session != callerp->p_pgrp->pg_session
- || ((pgid != p->p_pid
- && (!pg || pg->pg_session != callerp->p_pgrp->pg_session))))
- return EPERM;
+ /* Temporary hack...XXX */
+ if (pg || !zombie_check_pid (pgid))
+ /* Look to see if this pgid is in use by a zombie; if so,
+ then don't do the permission check below. This is incorrect;
+ actually, zombies should be more real than they are now.
+ But the effect is right to avoid confusing bash in the case I
+ care about right now. */
+ {
+
+ if (p->p_pgrp->pg_session->s_sid == p->p_pid
+ || p->p_pgrp->pg_session != callerp->p_pgrp->pg_session
+ || ((pgid != p->p_pid
+ && (!pg || pg->pg_session != callerp->p_pgrp->pg_session))))
+ return EPERM;
+ }
if (p->p_pgrp != pg)
{