From John Dyson - fix for bug in kern_physio where buffers would be
[unix-history] / sys / kern / tty_tty.c
index c678491..4bf46ee 100644 (file)
@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  *     from: @(#)tty_tty.c     7.15 (Berkeley) 5/28/91
  * SUCH DAMAGE.
  *
  *     from: @(#)tty_tty.c     7.15 (Berkeley) 5/28/91
- *     $Id$
+ *     $Id: tty_tty.c,v 1.2 1993/10/16 15:25:05 rgrimes Exp $
  */
 
 /*
  */
 
 /*
@@ -49,6 +49,7 @@
 #define cttyvp(p) ((p)->p_flag&SCTTY ? (p)->p_session->s_ttyvp : NULL)
 
 /*ARGSUSED*/
 #define cttyvp(p) ((p)->p_flag&SCTTY ? (p)->p_session->s_ttyvp : NULL)
 
 /*ARGSUSED*/
+int
 cttyopen(dev, flag, mode, p)
        dev_t dev;
        int flag, mode;
 cttyopen(dev, flag, mode, p)
        dev_t dev;
        int flag, mode;
@@ -69,9 +70,11 @@ cttyopen(dev, flag, mode, p)
 }
 
 /*ARGSUSED*/
 }
 
 /*ARGSUSED*/
+int
 cttyread(dev, uio, flag)
        dev_t dev;
        struct uio *uio;
 cttyread(dev, uio, flag)
        dev_t dev;
        struct uio *uio;
+       int flag;
 {
        register struct vnode *ttyvp = cttyvp(uio->uio_procp);
        int error;
 {
        register struct vnode *ttyvp = cttyvp(uio->uio_procp);
        int error;
@@ -85,9 +88,11 @@ cttyread(dev, uio, flag)
 }
 
 /*ARGSUSED*/
 }
 
 /*ARGSUSED*/
+int
 cttywrite(dev, uio, flag)
        dev_t dev;
        struct uio *uio;
 cttywrite(dev, uio, flag)
        dev_t dev;
        struct uio *uio;
+       int flag;
 {
        register struct vnode *ttyvp = cttyvp(uio->uio_procp);
        int error;
 {
        register struct vnode *ttyvp = cttyvp(uio->uio_procp);
        int error;
@@ -101,6 +106,7 @@ cttywrite(dev, uio, flag)
 }
 
 /*ARGSUSED*/
 }
 
 /*ARGSUSED*/
+int
 cttyioctl(dev, cmd, addr, flag, p)
        dev_t dev;
        int cmd;
 cttyioctl(dev, cmd, addr, flag, p)
        dev_t dev;
        int cmd;
@@ -112,7 +118,9 @@ cttyioctl(dev, cmd, addr, flag, p)
 
        if (ttyvp == NULL)
                return (EIO);
 
        if (ttyvp == NULL)
                return (EIO);
-       if (cmd == TIOCNOTTY) {
+       if (cmd == TIOCSCTTY)   /* don't allow controlling tty to be set */
+               return EINVAL;  /* to controlling tty - infinite recursion */
+       else if (cmd == TIOCNOTTY) {
                if (!SESS_LEADER(p)) {
                        p->p_flag &= ~SCTTY;
                        return (0);
                if (!SESS_LEADER(p)) {
                        p->p_flag &= ~SCTTY;
                        return (0);
@@ -123,6 +131,7 @@ cttyioctl(dev, cmd, addr, flag, p)
 }
 
 /*ARGSUSED*/
 }
 
 /*ARGSUSED*/
+int
 cttyselect(dev, flag, p)
        dev_t dev;
        int flag;
 cttyselect(dev, flag, p)
        dev_t dev;
        int flag;