Deleted Added
full compact
kern_priv.c (256281) kern_priv.c (260817)
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/10/sys/kern/kern_priv.c 252855 2013-07-06 00:10:52Z jamie $");
34__FBSDID("$FreeBSD: stable/10/sys/kern/kern_priv.c 260817 2014-01-17 10:58:59Z 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 = 1;
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 = 1;
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{

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

164
165 /*
166 * The default is deny, so if no policies have granted it, reject
167 * with a privilege error here.
168 */
169 error = EPERM;
170out:
171 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{

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

164
165 /*
166 * The default is deny, so if no policies have granted it, reject
167 * with a privilege error here.
168 */
169 error = EPERM;
170out:
171 if (error)
172 SDT_PROBE1(priv, kernel, priv_check, priv_err, priv);
172 SDT_PROBE1(priv, kernel, priv_check, priv__err, priv);
173 else
173 else
174 SDT_PROBE1(priv, kernel, priv_check, priv_ok, priv);
174 SDT_PROBE1(priv, kernel, priv_check, priv__ok, priv);
175 return (error);
176}
177
178int
179priv_check(struct thread *td, int priv)
180{
181
182 KASSERT(td == curthread, ("priv_check: td != curthread"));
183
184 return (priv_check_cred(td->td_ucred, priv, 0));
185}
175 return (error);
176}
177
178int
179priv_check(struct thread *td, int priv)
180{
181
182 KASSERT(td == curthread, ("priv_check: td != curthread"));
183
184 return (priv_check_cred(td->td_ucred, priv, 0));
185}