diff options
| author | 2011-04-02 17:04:35 +0000 | |
|---|---|---|
| committer | 2011-04-02 17:04:35 +0000 | |
| commit | bfb8af8fd908165924c3da75dcad45cbc5d95125 (patch) | |
| tree | 2ff87f12229de930c37445002878d332e70862ac /sys/kern/kern_prot.c | |
| parent | Constrain the buffer cache to use only the dma reachable region of memory. (diff) | |
| download | wireguard-openbsd-bfb8af8fd908165924c3da75dcad45cbc5d95125.tar.xz wireguard-openbsd-bfb8af8fd908165924c3da75dcad45cbc5d95125.zip | |
Move P_SUGID and P_SUGIDEXEC from struct proc to struct process, so
that you can't evade the checks by doing the dirty work in an rthread
ok blambert@, deraadt@
Diffstat (limited to 'sys/kern/kern_prot.c')
| -rw-r--r-- | sys/kern/kern_prot.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/sys/kern/kern_prot.c b/sys/kern/kern_prot.c index a34714c4ba5..5b058ee605b 100644 --- a/sys/kern/kern_prot.c +++ b/sys/kern/kern_prot.c @@ -1,4 +1,4 @@ -/* $OpenBSD: kern_prot.c,v 1.46 2010/07/26 01:56:27 guenther Exp $ */ +/* $OpenBSD: kern_prot.c,v 1.47 2011/04/02 17:04:35 guenther Exp $ */ /* $NetBSD: kern_prot.c,v 1.33 1996/02/09 18:59:42 christos Exp $ */ /* @@ -160,7 +160,7 @@ sys_geteuid(struct proc *p, void *v, register_t *retval) int sys_issetugid(struct proc *p, void *v, register_t *retval) { - if (p->p_flag & P_SUGIDEXEC) + if (p->p_p->ps_flags & PS_SUGIDEXEC) *retval = 1; else *retval = 0; @@ -404,7 +404,7 @@ sys_setresuid(struct proc *p, void *v, register_t *retval) if (suid != (uid_t)-1 && suid != pc->p_svuid) pc->p_svuid = suid; - atomic_setbits_int(&p->p_flag, P_SUGID); + atomic_setbits_int(&p->p_p->ps_flags, PS_SUGID); return (0); } @@ -498,7 +498,7 @@ sys_setresgid(struct proc *p, void *v, register_t *retval) if (sgid != (gid_t)-1) pc->p_svgid = sgid; - atomic_setbits_int(&p->p_flag, P_SUGID); + atomic_setbits_int(&p->p_p->ps_flags, PS_SUGID); return (0); } @@ -607,7 +607,7 @@ sys_setuid(struct proc *p, void *v, register_t *retval) */ pc->pc_ucred = crcopy(pc->pc_ucred); pc->pc_ucred->cr_uid = uid; - atomic_setbits_int(&p->p_flag, P_SUGID); + atomic_setbits_int(&p->p_p->ps_flags, PS_SUGID); return (0); } @@ -636,7 +636,7 @@ sys_seteuid(struct proc *p, void *v, register_t *retval) */ pc->pc_ucred = crcopy(pc->pc_ucred); pc->pc_ucred->cr_uid = euid; - atomic_setbits_int(&p->p_flag, P_SUGID); + atomic_setbits_int(&p->p_p->ps_flags, PS_SUGID); return (0); } @@ -675,7 +675,7 @@ sys_setgid(struct proc *p, void *v, register_t *retval) */ pc->pc_ucred = crcopy(pc->pc_ucred); pc->pc_ucred->cr_gid = gid; - atomic_setbits_int(&p->p_flag, P_SUGID); + atomic_setbits_int(&p->p_p->ps_flags, PS_SUGID); return (0); } @@ -704,7 +704,7 @@ sys_setegid(struct proc *p, void *v, register_t *retval) */ pc->pc_ucred = crcopy(pc->pc_ucred); pc->pc_ucred->cr_gid = egid; - atomic_setbits_int(&p->p_flag, P_SUGID); + atomic_setbits_int(&p->p_p->ps_flags, PS_SUGID); return (0); } @@ -731,7 +731,7 @@ sys_setgroups(struct proc *p, void *v, register_t *retval) if (error) return (error); pc->pc_ucred->cr_ngroups = ngrp; - atomic_setbits_int(&p->p_flag, P_SUGID); + atomic_setbits_int(&p->p_p->ps_flags, PS_SUGID); return (0); } |
