Module Name: src Committed By: christos Date: Tue Mar 24 21:00:06 UTC 2009
Modified Files: src/sys/kern: kern_exec.c kern_fork.c Log Message: use kauth instead of uid != 0 To generate a diff of this commit: cvs rdiff -u -r1.286 -r1.287 src/sys/kern/kern_exec.c cvs rdiff -u -r1.172 -r1.173 src/sys/kern/kern_fork.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_exec.c diff -u src/sys/kern/kern_exec.c:1.286 src/sys/kern/kern_exec.c:1.287 --- src/sys/kern/kern_exec.c:1.286 Sat Mar 7 14:23:02 2009 +++ src/sys/kern/kern_exec.c Tue Mar 24 17:00:05 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_exec.c,v 1.286 2009/03/07 19:23:02 christos Exp $ */ +/* $NetBSD: kern_exec.c,v 1.287 2009/03/24 21:00:05 christos Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -59,7 +59,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kern_exec.c,v 1.286 2009/03/07 19:23:02 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_exec.c,v 1.287 2009/03/24 21:00:05 christos Exp $"); #include "opt_ktrace.h" #include "opt_modular.h" @@ -520,7 +520,6 @@ char *pathbuf; size_t pathbuflen; u_int modgen; - uid_t uid; p = l->l_proc; modgen = 0; @@ -541,8 +540,9 @@ * to call exec in order to do something useful. */ retry: - if ((p->p_flag & PK_SUGID) && (uid = kauth_cred_getuid(l->l_cred)) != 0 - && chgproccnt(uid, 0) > p->p_rlimit[RLIMIT_NPROC].rlim_cur) + if ((p->p_flag & PK_SUGID) && kauth_authorize_generic(l->l_cred, + KAUTH_GENERIC_ISSUSER, NULL) != 0 && chgproccnt(kauth_cred_getuid( + l->l_cred), 0) > p->p_rlimit[RLIMIT_NPROC].rlim_cur) return EAGAIN; oldlwpflags = l->l_flag & (LW_SA | LW_SA_UPCALL); Index: src/sys/kern/kern_fork.c diff -u src/sys/kern/kern_fork.c:1.172 src/sys/kern/kern_fork.c:1.173 --- src/sys/kern/kern_fork.c:1.172 Sat Jan 17 02:02:35 2009 +++ src/sys/kern/kern_fork.c Tue Mar 24 17:00:06 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_fork.c,v 1.172 2009/01/17 07:02:35 yamt Exp $ */ +/* $NetBSD: kern_fork.c,v 1.173 2009/03/24 21:00:06 christos Exp $ */ /*- * Copyright (c) 1999, 2001, 2004, 2006, 2007, 2008 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kern_fork.c,v 1.172 2009/01/17 07:02:35 yamt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_fork.c,v 1.173 2009/03/24 21:00:06 christos Exp $"); #include "opt_ktrace.h" @@ -240,8 +240,8 @@ * Enforce limits. */ count = chgproccnt(uid, 1); - if (uid != 0 && - __predict_false(count > p1->p_rlimit[RLIMIT_NPROC].rlim_cur)) { + if (kauth_authorize_generic(l1->l_cred, KAUTH_GENERIC_ISSUSER, NULL) != + 0 && __predict_false(count > p1->p_rlimit[RLIMIT_NPROC].rlim_cur)) { (void)chgproccnt(uid, -1); atomic_dec_uint(&nprocs); if (forkfsleep)