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 --- |