diff options
| author | 2015-10-18 05:26:55 +0000 | |
|---|---|---|
| committer | 2015-10-18 05:26:55 +0000 | |
| commit | 66b07ceddaa45f42a07fb355c68ff4387431f514 (patch) | |
| tree | 1b0845dbc30d128d2212fbbea0704f74d82f2c29 /sys/kern/sys_generic.c | |
| parent | Use offsetof() instead of adding the sizes of the preceeding struct members (diff) | |
| download | wireguard-openbsd-66b07ceddaa45f42a07fb355c68ff4387431f514.tar.xz wireguard-openbsd-66b07ceddaa45f42a07fb355c68ff4387431f514.zip | |
move SS_DNS socket check from kern_plegde.c to sys_generic.c
this check has nothing to do with pledge(2). make it lives in sys_ioctl() call.
while here, move the (fp == NULL) check early and remove duplicate check from
pledge_ioctl_check().
ok guenther@ deraadt@
Diffstat (limited to 'sys/kern/sys_generic.c')
| -rw-r--r-- | sys/kern/sys_generic.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/sys/kern/sys_generic.c b/sys/kern/sys_generic.c index e837cc5431e..baaedd4efb5 100644 --- a/sys/kern/sys_generic.c +++ b/sys/kern/sys_generic.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sys_generic.c,v 1.107 2015/10/11 23:13:02 deraadt Exp $ */ +/* $OpenBSD: sys_generic.c,v 1.108 2015/10/18 05:26:55 semarie Exp $ */ /* $NetBSD: sys_generic.c,v 1.24 1996/03/29 00:25:32 cgd Exp $ */ /* @@ -404,13 +404,20 @@ sys_ioctl(struct proc *p, void *v, register_t *retval) fdp = p->p_fd; fp = fd_getfile_mode(fdp, SCARG(uap, fd), FREAD|FWRITE); + if (fp == NULL) + return (EBADF); + + if (fp->f_type == DTYPE_SOCKET) { + struct socket *so = fp->f_data; + + if (so->so_state & SS_DNS) + return (EINVAL); + } + error = pledge_ioctl_check(p, com, fp); if (error) return (error); - if (fp == NULL) - return (EBADF); - switch (com) { case FIONCLEX: case FIOCLEX: |
