Deleted Added
full compact
mac_process.c (189503) mac_process.c (189529)
1/*-
2 * Copyright (c) 1999-2002, 2008-2009 Robert N. M. Watson
3 * Copyright (c) 2001 Ilmar S. Habibulin
4 * Copyright (c) 2001-2003 Networks Associates Technology, Inc.
1/*-
2 * Copyright (c) 1999-2002, 2008-2009 Robert N. M. Watson
3 * Copyright (c) 2001 Ilmar S. Habibulin
4 * Copyright (c) 2001-2003 Networks Associates Technology, Inc.
5 * Copyright (c) 2005 Samy Al Bahra
6 * Copyright (c) 2006 SPARTA, Inc.
7 * Copyright (c) 2008 Apple Inc.
8 * All rights reserved.
9 *
10 * This software was developed by Robert Watson and Ilmar Habibulin for the
11 * TrustedBSD Project.
12 *
13 * This software was developed for the FreeBSD Project in part by Network

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

39 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
40 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
41 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
42 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
43 * SUCH DAMAGE.
44 */
45
46#include <sys/cdefs.h>
5 * Copyright (c) 2006 SPARTA, Inc.
6 * Copyright (c) 2008 Apple Inc.
7 * All rights reserved.
8 *
9 * This software was developed by Robert Watson and Ilmar Habibulin for the
10 * TrustedBSD Project.
11 *
12 * This software was developed for the FreeBSD Project in part by Network

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

38 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
39 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
40 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
41 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
42 * SUCH DAMAGE.
43 */
44
45#include <sys/cdefs.h>
47__FBSDID("$FreeBSD: head/sys/security/mac/mac_process.c 189503 2009-03-08 00:50:37Z rwatson $");
46__FBSDID("$FreeBSD: head/sys/security/mac/mac_process.c 189529 2009-03-08 10:58:37Z rwatson $");
48
49#include "opt_kdtrace.h"
50#include "opt_mac.h"
51
52#include <sys/param.h>
53#include <sys/condvar.h>
54#include <sys/imgact.h>
55#include <sys/kernel.h>

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

419 PROC_LOCK_ASSERT(p, MA_OWNED);
420
421 MAC_CHECK(proc_check_signal, cred, p, signum);
422 MAC_CHECK_PROBE3(proc_check_signal, error, cred, p, signum);
423
424 return (error);
425}
426
47
48#include "opt_kdtrace.h"
49#include "opt_mac.h"
50
51#include <sys/param.h>
52#include <sys/condvar.h>
53#include <sys/imgact.h>
54#include <sys/kernel.h>

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

418 PROC_LOCK_ASSERT(p, MA_OWNED);
419
420 MAC_CHECK(proc_check_signal, cred, p, signum);
421 MAC_CHECK_PROBE3(proc_check_signal, error, cred, p, signum);
422
423 return (error);
424}
425
427MAC_CHECK_PROBE_DEFINE2(proc_check_setuid, "struct ucred *", "uid_t");
428
429int
430mac_proc_check_setuid(struct proc *p, struct ucred *cred, uid_t uid)
431{
432 int error;
433
434 PROC_LOCK_ASSERT(p, MA_OWNED);
435
436 MAC_CHECK(proc_check_setuid, cred, uid);
437 MAC_CHECK_PROBE2(proc_check_setuid, error, cred, uid);
438
439 return (error);
440}
441
442MAC_CHECK_PROBE_DEFINE2(proc_check_seteuid, "struct ucred *", "uid_t");
443
444int
445mac_proc_check_seteuid(struct proc *p, struct ucred *cred, uid_t euid)
446{
447 int error;
448
449 PROC_LOCK_ASSERT(p, MA_OWNED);
450
451 MAC_CHECK(proc_check_seteuid, cred, euid);
452 MAC_CHECK_PROBE2(proc_check_seteuid, error, cred, euid);
453
454 return (error);
455}
456
457MAC_CHECK_PROBE_DEFINE2(proc_check_setgid, "struct ucred *", "gid_t");
458
459int
460mac_proc_check_setgid(struct proc *p, struct ucred *cred, gid_t gid)
461{
462 int error;
463
464 PROC_LOCK_ASSERT(p, MA_OWNED);
465
466 MAC_CHECK(proc_check_setgid, cred, gid);
467 MAC_CHECK_PROBE2(proc_check_setgid, error, cred, gid);
468
469 return (error);
470}
471
472MAC_CHECK_PROBE_DEFINE2(proc_check_setegid, "struct ucred *", "gid_t");
473
474int
475mac_proc_check_setegid(struct proc *p, struct ucred *cred, gid_t egid)
476{
477 int error;
478
479 PROC_LOCK_ASSERT(p, MA_OWNED);
480
481 MAC_CHECK(proc_check_setegid, cred, egid);
482 MAC_CHECK_PROBE2(proc_check_setegid, error, cred, egid);
483
484 return (error);
485}
486
487MAC_CHECK_PROBE_DEFINE3(proc_check_setgroups, "struct ucred *", "int",
488 "gid_t *");
489
490int
491mac_proc_check_setgroups(struct proc *p, struct ucred *cred, int ngroups,
492 gid_t *gidset)
493{
494 int error;
495
496 PROC_LOCK_ASSERT(p, MA_OWNED);
497
498 MAC_CHECK(proc_check_setgroups, cred, ngroups, gidset);
499 MAC_CHECK_PROBE3(proc_check_setgroups, error, cred, ngroups, gidset);
500
501 return (error);
502}
503
504MAC_CHECK_PROBE_DEFINE3(proc_check_setreuid, "struct ucred *", "uid_t",
505 "uid_t");
506
507int
508mac_proc_check_setreuid(struct proc *p, struct ucred *cred, uid_t ruid,
509 uid_t euid)
510{
511 int error;
512
513 PROC_LOCK_ASSERT(p, MA_OWNED);
514
515 MAC_CHECK(proc_check_setreuid, cred, ruid, euid);
516 MAC_CHECK_PROBE3(proc_check_setreuid, error, cred, ruid, euid);
517
518 return (error);
519}
520
521MAC_CHECK_PROBE_DEFINE3(proc_check_setregid, "struct ucred *", "gid_t",
522 "gid_t");
523
524int
525mac_proc_check_setregid(struct proc *proc, struct ucred *cred, gid_t rgid,
526 gid_t egid)
527{
528 int error;
529
530 PROC_LOCK_ASSERT(proc, MA_OWNED);
531
532 MAC_CHECK(proc_check_setregid, cred, rgid, egid);
533 MAC_CHECK_PROBE3(proc_check_setregid, error, cred, rgid, egid);
534
535 return (error);
536}
537
538MAC_CHECK_PROBE_DEFINE4(proc_check_setresuid, "struct ucred *", "uid_t",
539 "uid_t", "uid_t");
540
541int
542mac_proc_check_setresuid(struct proc *p, struct ucred *cred, uid_t ruid,
543 uid_t euid, uid_t suid)
544{
545 int error;
546
547 PROC_LOCK_ASSERT(p, MA_OWNED);
548
549 MAC_CHECK(proc_check_setresuid, cred, ruid, euid, suid);
550 MAC_CHECK_PROBE4(proc_check_setresuid, error, cred, ruid, euid,
551 suid);
552
553 return (error);
554}
555
556MAC_CHECK_PROBE_DEFINE4(proc_check_setresgid, "struct ucred *", "gid_t",
557 "gid_t", "gid_t");
558
559int
560mac_proc_check_setresgid(struct proc *p, struct ucred *cred, gid_t rgid,
561 gid_t egid, gid_t sgid)
562{
563 int error;
564
565 PROC_LOCK_ASSERT(p, MA_OWNED);
566
567 MAC_CHECK(proc_check_setresgid, cred, rgid, egid, sgid);
568 MAC_CHECK_PROBE4(proc_check_setresgid, error, cred, rgid, egid,
569 sgid);
570
571 return (error);
572}
573
574MAC_CHECK_PROBE_DEFINE2(proc_check_wait, "struct ucred *", "struct proc *");
575
576int
577mac_proc_check_wait(struct ucred *cred, struct proc *p)
578{
579 int error;
580
581 PROC_LOCK_ASSERT(p, MA_OWNED);
582
583 MAC_CHECK(proc_check_wait, cred, p);
584 MAC_CHECK_PROBE2(proc_check_wait, error, cred, p);
585
586 return (error);
587}
426MAC_CHECK_PROBE_DEFINE2(proc_check_wait, "struct ucred *", "struct proc *");
427
428int
429mac_proc_check_wait(struct ucred *cred, struct proc *p)
430{
431 int error;
432
433 PROC_LOCK_ASSERT(p, MA_OWNED);
434
435 MAC_CHECK(proc_check_wait, cred, p);
436 MAC_CHECK_PROBE2(proc_check_wait, error, cred, p);
437
438 return (error);
439}