Deleted Added
full compact
kern_priv.c (260818) kern_priv.c (262057)
1/*-
2 * Copyright (c) 2006 nCircle Network Security, Inc.
3 * Copyright (c) 2009 Robert N. M. Watson
4 * All rights reserved.
5 *
6 * This software was developed by Robert N. M. Watson for the TrustedBSD
7 * Project under contract to nCircle Network Security, Inc.
8 *

--- 17 unchanged lines hidden (view full) ---

26 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
27 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */
30
31#include "opt_kdtrace.h"
32
33#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 2006 nCircle Network Security, Inc.
3 * Copyright (c) 2009 Robert N. M. Watson
4 * All rights reserved.
5 *
6 * This software was developed by Robert N. M. Watson for the TrustedBSD
7 * Project under contract to nCircle Network Security, Inc.
8 *

--- 17 unchanged lines hidden (view full) ---

26 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
27 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */
30
31#include "opt_kdtrace.h"
32
33#include <sys/cdefs.h>
34__FBSDID("$FreeBSD: stable/9/sys/kern/kern_priv.c 260818 2014-01-17 11:04:59Z avg $");
34__FBSDID("$FreeBSD: stable/9/sys/kern/kern_priv.c 262057 2014-02-17 13:58:50Z avg $");
35
36#include <sys/param.h>
37#include <sys/jail.h>
38#include <sys/kernel.h>
39#include <sys/priv.h>
40#include <sys/proc.h>
41#include <sys/sdt.h>
42#include <sys/sysctl.h>

--- 17 unchanged lines hidden (view full) ---

60TUNABLE_INT("security.bsd.suser_enabled", &suser_enabled);
61
62static int unprivileged_mlock = 0;
63SYSCTL_INT(_security_bsd, OID_AUTO, unprivileged_mlock, CTLFLAG_RW|CTLFLAG_TUN,
64 &unprivileged_mlock, 0, "Allow non-root users to call mlock(2)");
65TUNABLE_INT("security.bsd.unprivileged_mlock", &unprivileged_mlock);
66
67SDT_PROVIDER_DEFINE(priv);
35
36#include <sys/param.h>
37#include <sys/jail.h>
38#include <sys/kernel.h>
39#include <sys/priv.h>
40#include <sys/proc.h>
41#include <sys/sdt.h>
42#include <sys/sysctl.h>

--- 17 unchanged lines hidden (view full) ---

60TUNABLE_INT("security.bsd.suser_enabled", &suser_enabled);
61
62static int unprivileged_mlock = 0;
63SYSCTL_INT(_security_bsd, OID_AUTO, unprivileged_mlock, CTLFLAG_RW|CTLFLAG_TUN,
64 &unprivileged_mlock, 0, "Allow non-root users to call mlock(2)");
65TUNABLE_INT("security.bsd.unprivileged_mlock", &unprivileged_mlock);
66
67SDT_PROVIDER_DEFINE(priv);
68SDT_PROBE_DEFINE1(priv, kernel, priv_check, priv_ok, priv-ok, "int");
69SDT_PROBE_DEFINE1(priv, kernel, priv_check, priv_err, priv-err, "int");
68SDT_PROBE_DEFINE1(priv, kernel, priv_check, priv__ok, "int");
69SDT_PROBE_DEFINE1(priv, kernel, priv_check, priv__err, "int");
70
71/*
72 * Check a credential for privilege. Lots of good reasons to deny privilege;
73 * only a few to grant it.
74 */
75int
76priv_check_cred(struct ucred *cred, int priv, int flags)
77{

--- 77 unchanged lines hidden (view full) ---

155
156 /*
157 * The default is deny, so if no policies have granted it, reject
158 * with a privilege error here.
159 */
160 error = EPERM;
161out:
162 if (error)
70
71/*
72 * Check a credential for privilege. Lots of good reasons to deny privilege;
73 * only a few to grant it.
74 */
75int
76priv_check_cred(struct ucred *cred, int priv, int flags)
77{

--- 77 unchanged lines hidden (view full) ---

155
156 /*
157 * The default is deny, so if no policies have granted it, reject
158 * with a privilege error here.
159 */
160 error = EPERM;
161out:
162 if (error)
163 SDT_PROBE1(priv, kernel, priv_check, priv_err, priv);
163 SDT_PROBE1(priv, kernel, priv_check, priv__err, priv);
164 else
164 else
165 SDT_PROBE1(priv, kernel, priv_check, priv_ok, priv);
165 SDT_PROBE1(priv, kernel, priv_check, priv__ok, priv);
166 return (error);
167}
168
169int
170priv_check(struct thread *td, int priv)
171{
172
173 KASSERT(td == curthread, ("priv_check: td != curthread"));
174
175 return (priv_check_cred(td->td_ucred, priv, 0));
176}
166 return (error);
167}
168
169int
170priv_check(struct thread *td, int priv)
171{
172
173 KASSERT(td == curthread, ("priv_check: td != curthread"));
174
175 return (priv_check_cred(td->td_ucred, priv, 0));
176}