Deleted Added
full compact
kern_prot.c (194556) kern_prot.c (195104)
1/*-
2 * Copyright (c) 1982, 1986, 1989, 1990, 1991, 1993
3 * The Regents of the University of California.
4 * (c) UNIX System Laboratories, Inc.
5 * Copyright (c) 2000-2001 Robert N. M. Watson.
6 * All rights reserved.
7 *
8 * All or some portions of this file are derived from material licensed

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

37 * @(#)kern_prot.c 8.6 (Berkeley) 1/21/94
38 */
39
40/*
41 * System calls related to processes and protection
42 */
43
44#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 1982, 1986, 1989, 1990, 1991, 1993
3 * The Regents of the University of California.
4 * (c) UNIX System Laboratories, Inc.
5 * Copyright (c) 2000-2001 Robert N. M. Watson.
6 * All rights reserved.
7 *
8 * All or some portions of this file are derived from material licensed

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

37 * @(#)kern_prot.c 8.6 (Berkeley) 1/21/94
38 */
39
40/*
41 * System calls related to processes and protection
42 */
43
44#include <sys/cdefs.h>
45__FBSDID("$FreeBSD: head/sys/kern/kern_prot.c 194556 2009-06-20 20:29:21Z brooks $");
45__FBSDID("$FreeBSD: head/sys/kern/kern_prot.c 195104 2009-06-27 13:58:44Z rwatson $");
46
47#include "opt_compat.h"
48#include "opt_inet.h"
49#include "opt_inet6.h"
50
51#include <sys/param.h>
52#include <sys/systm.h>
53#include <sys/acct.h>

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

484{
485 struct proc *p = td->td_proc;
486 struct ucred *newcred, *oldcred;
487 uid_t uid;
488 struct uidinfo *uip;
489 int error;
490
491 uid = uap->uid;
46
47#include "opt_compat.h"
48#include "opt_inet.h"
49#include "opt_inet6.h"
50
51#include <sys/param.h>
52#include <sys/systm.h>
53#include <sys/acct.h>

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

484{
485 struct proc *p = td->td_proc;
486 struct ucred *newcred, *oldcred;
487 uid_t uid;
488 struct uidinfo *uip;
489 int error;
490
491 uid = uap->uid;
492 AUDIT_ARG(uid, uid);
492 AUDIT_ARG_UID(uid);
493 newcred = crget();
494 uip = uifind(uid);
495 PROC_LOCK(p);
496 /*
497 * Copy credentials so other references do not see our changes.
498 */
499 oldcred = crcopysafe(p, newcred);
500

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

595{
596 struct proc *p = td->td_proc;
597 struct ucred *newcred, *oldcred;
598 uid_t euid;
599 struct uidinfo *euip;
600 int error;
601
602 euid = uap->euid;
493 newcred = crget();
494 uip = uifind(uid);
495 PROC_LOCK(p);
496 /*
497 * Copy credentials so other references do not see our changes.
498 */
499 oldcred = crcopysafe(p, newcred);
500

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

595{
596 struct proc *p = td->td_proc;
597 struct ucred *newcred, *oldcred;
598 uid_t euid;
599 struct uidinfo *euip;
600 int error;
601
602 euid = uap->euid;
603 AUDIT_ARG(euid, euid);
603 AUDIT_ARG_EUID(euid);
604 newcred = crget();
605 euip = uifind(euid);
606 PROC_LOCK(p);
607 /*
608 * Copy credentials so other references do not see our changes.
609 */
610 oldcred = crcopysafe(p, newcred);
611

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

651setgid(struct thread *td, struct setgid_args *uap)
652{
653 struct proc *p = td->td_proc;
654 struct ucred *newcred, *oldcred;
655 gid_t gid;
656 int error;
657
658 gid = uap->gid;
604 newcred = crget();
605 euip = uifind(euid);
606 PROC_LOCK(p);
607 /*
608 * Copy credentials so other references do not see our changes.
609 */
610 oldcred = crcopysafe(p, newcred);
611

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

651setgid(struct thread *td, struct setgid_args *uap)
652{
653 struct proc *p = td->td_proc;
654 struct ucred *newcred, *oldcred;
655 gid_t gid;
656 int error;
657
658 gid = uap->gid;
659 AUDIT_ARG(gid, gid);
659 AUDIT_ARG_GID(gid);
660 newcred = crget();
661 PROC_LOCK(p);
662 oldcred = crcopysafe(p, newcred);
663
664#ifdef MAC
665 error = mac_cred_check_setgid(oldcred, gid);
666 if (error)
667 goto fail;

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

749setegid(struct thread *td, struct setegid_args *uap)
750{
751 struct proc *p = td->td_proc;
752 struct ucred *newcred, *oldcred;
753 gid_t egid;
754 int error;
755
756 egid = uap->egid;
660 newcred = crget();
661 PROC_LOCK(p);
662 oldcred = crcopysafe(p, newcred);
663
664#ifdef MAC
665 error = mac_cred_check_setgid(oldcred, gid);
666 if (error)
667 goto fail;

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

749setegid(struct thread *td, struct setegid_args *uap)
750{
751 struct proc *p = td->td_proc;
752 struct ucred *newcred, *oldcred;
753 gid_t egid;
754 int error;
755
756 egid = uap->egid;
757 AUDIT_ARG(egid, egid);
757 AUDIT_ARG_EGID(egid);
758 newcred = crget();
759 PROC_LOCK(p);
760 oldcred = crcopysafe(p, newcred);
761
762#ifdef MAC
763 error = mac_cred_check_setegid(oldcred, egid);
764 if (error)
765 goto fail;

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

814kern_setgroups(struct thread *td, u_int ngrp, gid_t *groups)
815{
816 struct proc *p = td->td_proc;
817 struct ucred *newcred, *oldcred;
818 int error;
819
820 if (ngrp > NGROUPS)
821 return (EINVAL);
758 newcred = crget();
759 PROC_LOCK(p);
760 oldcred = crcopysafe(p, newcred);
761
762#ifdef MAC
763 error = mac_cred_check_setegid(oldcred, egid);
764 if (error)
765 goto fail;

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

814kern_setgroups(struct thread *td, u_int ngrp, gid_t *groups)
815{
816 struct proc *p = td->td_proc;
817 struct ucred *newcred, *oldcred;
818 int error;
819
820 if (ngrp > NGROUPS)
821 return (EINVAL);
822 AUDIT_ARG(groupset, groups, ngrp);
822 AUDIT_ARG_GROUPSET(groups, ngrp);
823 newcred = crget();
824 crextend(newcred, ngrp);
825 PROC_LOCK(p);
826 oldcred = crcopysafe(p, newcred);
827
828#ifdef MAC
829 error = mac_cred_check_setgroups(oldcred, ngrp, groups);
830 if (error)

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

871 struct proc *p = td->td_proc;
872 struct ucred *newcred, *oldcred;
873 uid_t euid, ruid;
874 struct uidinfo *euip, *ruip;
875 int error;
876
877 euid = uap->euid;
878 ruid = uap->ruid;
823 newcred = crget();
824 crextend(newcred, ngrp);
825 PROC_LOCK(p);
826 oldcred = crcopysafe(p, newcred);
827
828#ifdef MAC
829 error = mac_cred_check_setgroups(oldcred, ngrp, groups);
830 if (error)

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

871 struct proc *p = td->td_proc;
872 struct ucred *newcred, *oldcred;
873 uid_t euid, ruid;
874 struct uidinfo *euip, *ruip;
875 int error;
876
877 euid = uap->euid;
878 ruid = uap->ruid;
879 AUDIT_ARG(euid, euid);
880 AUDIT_ARG(ruid, ruid);
879 AUDIT_ARG_EUID(euid);
880 AUDIT_ARG_RUID(ruid);
881 newcred = crget();
882 euip = uifind(euid);
883 ruip = uifind(ruid);
884 PROC_LOCK(p);
885 oldcred = crcopysafe(p, newcred);
886
887#ifdef MAC
888 error = mac_cred_check_setreuid(oldcred, ruid, euid);

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

937{
938 struct proc *p = td->td_proc;
939 struct ucred *newcred, *oldcred;
940 gid_t egid, rgid;
941 int error;
942
943 egid = uap->egid;
944 rgid = uap->rgid;
881 newcred = crget();
882 euip = uifind(euid);
883 ruip = uifind(ruid);
884 PROC_LOCK(p);
885 oldcred = crcopysafe(p, newcred);
886
887#ifdef MAC
888 error = mac_cred_check_setreuid(oldcred, ruid, euid);

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

937{
938 struct proc *p = td->td_proc;
939 struct ucred *newcred, *oldcred;
940 gid_t egid, rgid;
941 int error;
942
943 egid = uap->egid;
944 rgid = uap->rgid;
945 AUDIT_ARG(egid, egid);
946 AUDIT_ARG(rgid, rgid);
945 AUDIT_ARG_EGID(egid);
946 AUDIT_ARG_RGID(rgid);
947 newcred = crget();
948 PROC_LOCK(p);
949 oldcred = crcopysafe(p, newcred);
950
951#ifdef MAC
952 error = mac_cred_check_setregid(oldcred, rgid, egid);
953 if (error)
954 goto fail;

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

1004 struct ucred *newcred, *oldcred;
1005 uid_t euid, ruid, suid;
1006 struct uidinfo *euip, *ruip;
1007 int error;
1008
1009 euid = uap->euid;
1010 ruid = uap->ruid;
1011 suid = uap->suid;
947 newcred = crget();
948 PROC_LOCK(p);
949 oldcred = crcopysafe(p, newcred);
950
951#ifdef MAC
952 error = mac_cred_check_setregid(oldcred, rgid, egid);
953 if (error)
954 goto fail;

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

1004 struct ucred *newcred, *oldcred;
1005 uid_t euid, ruid, suid;
1006 struct uidinfo *euip, *ruip;
1007 int error;
1008
1009 euid = uap->euid;
1010 ruid = uap->ruid;
1011 suid = uap->suid;
1012 AUDIT_ARG(euid, euid);
1013 AUDIT_ARG(ruid, ruid);
1014 AUDIT_ARG(suid, suid);
1012 AUDIT_ARG_EUID(euid);
1013 AUDIT_ARG_RUID(ruid);
1014 AUDIT_ARG_SUID(suid);
1015 newcred = crget();
1016 euip = uifind(euid);
1017 ruip = uifind(ruid);
1018 PROC_LOCK(p);
1019 oldcred = crcopysafe(p, newcred);
1020
1021#ifdef MAC
1022 error = mac_cred_check_setresuid(oldcred, ruid, euid, suid);

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

1082 struct proc *p = td->td_proc;
1083 struct ucred *newcred, *oldcred;
1084 gid_t egid, rgid, sgid;
1085 int error;
1086
1087 egid = uap->egid;
1088 rgid = uap->rgid;
1089 sgid = uap->sgid;
1015 newcred = crget();
1016 euip = uifind(euid);
1017 ruip = uifind(ruid);
1018 PROC_LOCK(p);
1019 oldcred = crcopysafe(p, newcred);
1020
1021#ifdef MAC
1022 error = mac_cred_check_setresuid(oldcred, ruid, euid, suid);

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

1082 struct proc *p = td->td_proc;
1083 struct ucred *newcred, *oldcred;
1084 gid_t egid, rgid, sgid;
1085 int error;
1086
1087 egid = uap->egid;
1088 rgid = uap->rgid;
1089 sgid = uap->sgid;
1090 AUDIT_ARG(egid, egid);
1091 AUDIT_ARG(rgid, rgid);
1092 AUDIT_ARG(sgid, sgid);
1090 AUDIT_ARG_EGID(egid);
1091 AUDIT_ARG_RGID(rgid);
1092 AUDIT_ARG_SGID(sgid);
1093 newcred = crget();
1094 PROC_LOCK(p);
1095 oldcred = crcopysafe(p, newcred);
1096
1097#ifdef MAC
1098 error = mac_cred_check_setresgid(oldcred, rgid, egid, sgid);
1099 if (error)
1100 goto fail;

--- 1110 unchanged lines hidden ---
1093 newcred = crget();
1094 PROC_LOCK(p);
1095 oldcred = crcopysafe(p, newcred);
1096
1097#ifdef MAC
1098 error = mac_cred_check_setresgid(oldcred, rgid, egid, sgid);
1099 if (error)
1100 goto fail;

--- 1110 unchanged lines hidden ---