Synopsis: Repeated TIOCSCTTY ioctl can corrupt session hold counts
NetBSD versions: -current, 1.6*, 1.5
Thanks to: David Laight, Jaromir Dolecek
Reported in NetBSD Security Advisory: NetBSD-SA2002-007

Index: kern/tty.c
===================================================================
RCS file: /cvsroot/syssrc/sys/kern/tty.c,v
retrieving revision 1.138
retrieving revision 1.139
diff -u -p -c -p -r1.138 -r1.139
*** kern/tty.c	2002/05/02 13:38:57	1.138
--- kern/tty.c	2002/07/21 20:43:53	1.139
***************
*** 987,992 ****
--- 987,996 ----
  		    ((p->p_session->s_ttyvp || tp->t_session) &&
  		    (tp->t_session != p->p_session)))
  			return (EPERM);
+ 
+ 		if (tp->t_session)
+ 			SESSRELE(tp->t_session);
+ 
  		SESSHOLD(p->p_session);
  		tp->t_session = p->p_session;
  		tp->t_pgrp = p->p_pgrp;
