Module Name: src Committed By: elad Date: Sun Oct 4 03:15:08 UTC 2009
Modified Files: src/sys/kern: kern_proc.c sys_process.c Log Message: Install floppies (haha) don't get built with ktrace/ptrace, so they don't include kern/sys_process.c. Move proc_uidmatch() to kern/kern_proc.c which always gets built instead. Pointed out by Kurt Schreiner on current-users@: http://mail-index.netbsd.org/current-users/2009/10/03/msg010745.html To generate a diff of this commit: cvs rdiff -u -r1.153 -r1.154 src/sys/kern/kern_proc.c cvs rdiff -u -r1.149 -r1.150 src/sys/kern/sys_process.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/kern/kern_proc.c diff -u src/sys/kern/kern_proc.c:1.153 src/sys/kern/kern_proc.c:1.154 --- src/sys/kern/kern_proc.c:1.153 Sat Oct 3 03:38:31 2009 +++ src/sys/kern/kern_proc.c Sun Oct 4 03:15:08 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_proc.c,v 1.153 2009/10/03 03:38:31 elad Exp $ */ +/* $NetBSD: kern_proc.c,v 1.154 2009/10/04 03:15:08 elad Exp $ */ /*- * Copyright (c) 1999, 2006, 2007, 2008 The NetBSD Foundation, Inc. @@ -62,7 +62,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kern_proc.c,v 1.153 2009/10/03 03:38:31 elad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_proc.c,v 1.154 2009/10/04 03:15:08 elad Exp $"); #include "opt_kstack.h" #include "opt_maxuprc.h" @@ -1436,3 +1436,36 @@ specificdata_setspecific(proc_specificdata_domain, &p->p_specdataref, key, data); } + +int +proc_uidmatch(kauth_cred_t cred, kauth_cred_t target) +{ + int r = 0; + + if (kauth_cred_getuid(cred) != kauth_cred_getuid(target) || + kauth_cred_getuid(cred) != kauth_cred_getsvuid(target)) { + /* + * suid proc of ours or proc not ours + */ + r = EPERM; + } else if (kauth_cred_getgid(target) != kauth_cred_getsvgid(target)) { + /* + * sgid proc has sgid back to us temporarily + */ + r = EPERM; + } else { + /* + * our rgid must be in target's group list (ie, + * sub-processes started by a sgid process) + */ + int ismember = 0; + + if (kauth_cred_ismember_gid(cred, + kauth_cred_getgid(target), &ismember) != 0 || + !ismember) + r = EPERM; + } + + return (r); +} + Index: src/sys/kern/sys_process.c diff -u src/sys/kern/sys_process.c:1.149 src/sys/kern/sys_process.c:1.150 --- src/sys/kern/sys_process.c:1.149 Fri Oct 2 22:38:45 2009 +++ src/sys/kern/sys_process.c Sun Oct 4 03:15:08 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: sys_process.c,v 1.149 2009/10/02 22:38:45 elad Exp $ */ +/* $NetBSD: sys_process.c,v 1.150 2009/10/04 03:15:08 elad Exp $ */ /*- * Copyright (c) 2008, 2009 The NetBSD Foundation, Inc. @@ -118,7 +118,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sys_process.c,v 1.149 2009/10/02 22:38:45 elad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sys_process.c,v 1.150 2009/10/04 03:15:08 elad Exp $"); #include "opt_ptrace.h" #include "opt_ktrace.h" @@ -1032,39 +1032,3 @@ KERNEL_LOCK(l->l_biglocks, l); } #endif /* KTRACE || PTRACE */ - -/* - * common code for corename, rlimit, and stopflag. - */ -int -proc_uidmatch(kauth_cred_t cred, kauth_cred_t target) -{ - int r = 0; - - if (kauth_cred_getuid(cred) != kauth_cred_getuid(target) || - kauth_cred_getuid(cred) != kauth_cred_getsvuid(target)) { - /* - * suid proc of ours or proc not ours - */ - r = EPERM; - } else if (kauth_cred_getgid(target) != kauth_cred_getsvgid(target)) { - /* - * sgid proc has sgid back to us temporarily - */ - r = EPERM; - } else { - /* - * our rgid must be in target's group list (ie, - * sub-processes started by a sgid process) - */ - int ismember = 0; - - if (kauth_cred_ismember_gid(cred, - kauth_cred_getgid(target), &ismember) != 0 || - !ismember) - r = EPERM; - } - - return (r); -} -