-/* $OpenBSD: kern_pledge.c,v 1.12 2015/10/11 15:25:39 deraadt Exp $ */
+/* $OpenBSD: kern_pledge.c,v 1.13 2015/10/11 15:40:48 deraadt Exp $ */
/*
* Copyright (c) 2015 Nicholas Marriott <nicm@openbsd.org>
return (ENOTTY);
case TIOCGPGRP:
case TIOCGWINSZ: /* various programs */
- case TIOCSWINSZ:
if (fp->f_type == DTYPE_VNODE && (vp->v_flag & VISTTY))
return (0);
break;
}
}
- if ((p->p_p->ps_pledge & PLEDGE_ROUTE)) {
- switch (com) {
- case SIOCGIFADDR:
- case SIOCGIFFLAGS:
- case SIOCGIFRDOMAIN:
- if (fp->f_type == DTYPE_SOCKET)
- return (0);
- break;
- }
- }
-
if ((p->p_p->ps_pledge & PLEDGE_TTY)) {
switch (com) {
case TIOCSPGRP:
#endif
case TIOCGPGRP:
case TIOCGWINSZ: /* various programs */
+ case TIOCSWINSZ:
case TIOCSBRK: /* cu */
case TIOCCDTR: /* cu */
case TIOCSETA: /* cu, ... */
}
}
+ if ((p->p_p->ps_pledge & PLEDGE_ROUTE)) {
+ switch (com) {
+ case SIOCGIFADDR:
+ case SIOCGIFFLAGS:
+ case SIOCGIFRDOMAIN:
+ if (fp->f_type == DTYPE_SOCKET)
+ return (0);
+ break;
+ }
+ }
+
return pledge_fail(p, EPERM, PLEDGE_IOCTL);
}