Deleted Added
full compact
mac_mls.c (184308) mac_mls.c (184407)
1/*-
2 * Copyright (c) 1999-2002, 2007-2008 Robert N. M. Watson
3 * Copyright (c) 2001-2005 McAfee, Inc.
4 * Copyright (c) 2006 SPARTA, Inc.
5 * All rights reserved.
6 *
7 * This software was developed by Robert Watson for the TrustedBSD Project.
8 *

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

30 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36 * SUCH DAMAGE.
37 *
1/*-
2 * Copyright (c) 1999-2002, 2007-2008 Robert N. M. Watson
3 * Copyright (c) 2001-2005 McAfee, Inc.
4 * Copyright (c) 2006 SPARTA, Inc.
5 * All rights reserved.
6 *
7 * This software was developed by Robert Watson for the TrustedBSD Project.
8 *

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

30 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36 * SUCH DAMAGE.
37 *
38 * $FreeBSD: head/sys/security/mac_mls/mac_mls.c 184308 2008-10-26 22:46:37Z rwatson $
38 * $FreeBSD: head/sys/security/mac_mls/mac_mls.c 184407 2008-10-28 11:33:06Z rwatson $
39 */
40
41/*
42 * Developed by the TrustedBSD Project.
43 *
44 * MLS fixed label mandatory confidentiality policy.
45 */
46

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

771 struct mac_mls *source, *dest;
772
773 source = SLOT(dlabel);
774 dest = SLOT(mlabel);
775
776 mls_copy_effective(source, dest);
777}
778
39 */
40
41/*
42 * Developed by the TrustedBSD Project.
43 *
44 * MLS fixed label mandatory confidentiality policy.
45 */
46

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

771 struct mac_mls *source, *dest;
772
773 source = SLOT(dlabel);
774 dest = SLOT(mlabel);
775
776 mls_copy_effective(source, dest);
777}
778
779static void
780mls_cred_associate_nfsd(struct ucred *cred)
781{
782 struct mac_mls *label;
783
784 label = SLOT(cred->cr_label);
785 mls_set_effective(label, MAC_MLS_TYPE_LOW, 0, NULL);
786 mls_set_range(label, MAC_MLS_TYPE_LOW, 0, NULL, MAC_MLS_TYPE_HIGH, 0,
787 NULL);
788}
789
779static int
780mls_cred_check_relabel(struct ucred *cred, struct label *newlabel)
781{
782 struct mac_mls *subj, *new;
783 int error;
784
785 subj = SLOT(cred->cr_label);
786 new = SLOT(newlabel);

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

850 /* XXX: range */
851 if (!mls_dominate_effective(subj, obj))
852 return (ESRCH);
853
854 return (0);
855}
856
857static void
790static int
791mls_cred_check_relabel(struct ucred *cred, struct label *newlabel)
792{
793 struct mac_mls *subj, *new;
794 int error;
795
796 subj = SLOT(cred->cr_label);
797 new = SLOT(newlabel);

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

861 /* XXX: range */
862 if (!mls_dominate_effective(subj, obj))
863 return (ESRCH);
864
865 return (0);
866}
867
868static void
869mls_cred_create_init(struct ucred *cred)
870{
871 struct mac_mls *dest;
872
873 dest = SLOT(cred->cr_label);
874
875 mls_set_effective(dest, MAC_MLS_TYPE_LOW, 0, NULL);
876 mls_set_range(dest, MAC_MLS_TYPE_LOW, 0, NULL, MAC_MLS_TYPE_HIGH, 0,
877 NULL);
878}
879
880static void
881mls_cred_create_swapper(struct ucred *cred)
882{
883 struct mac_mls *dest;
884
885 dest = SLOT(cred->cr_label);
886
887 mls_set_effective(dest, MAC_MLS_TYPE_EQUAL, 0, NULL);
888 mls_set_range(dest, MAC_MLS_TYPE_LOW, 0, NULL, MAC_MLS_TYPE_HIGH, 0,
889 NULL);
890}
891
892static void
858mls_cred_relabel(struct ucred *cred, struct label *newlabel)
859{
860 struct mac_mls *source, *dest;
861
862 source = SLOT(newlabel);
863 dest = SLOT(cred->cr_label);
864
865 mls_copy(source, dest);

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

1518 struct mac_mls *source, *dest;
1519
1520 source = SLOT(cred->cr_label);
1521 dest = SLOT(kslabel);
1522
1523 mls_copy_effective(source, dest);
1524}
1525
893mls_cred_relabel(struct ucred *cred, struct label *newlabel)
894{
895 struct mac_mls *source, *dest;
896
897 source = SLOT(newlabel);
898 dest = SLOT(cred->cr_label);
899
900 mls_copy(source, dest);

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

1553 struct mac_mls *source, *dest;
1554
1555 source = SLOT(cred->cr_label);
1556 dest = SLOT(kslabel);
1557
1558 mls_copy_effective(source, dest);
1559}
1560
1526static void
1527mls_proc_associate_nfsd(struct ucred *cred)
1528{
1529 struct mac_mls *label;
1530
1531 label = SLOT(cred->cr_label);
1532 mls_set_effective(label, MAC_MLS_TYPE_LOW, 0, NULL);
1533 mls_set_range(label, MAC_MLS_TYPE_LOW, 0, NULL, MAC_MLS_TYPE_HIGH, 0,
1534 NULL);
1535}
1536
1537static int
1538mls_proc_check_debug(struct ucred *cred, struct proc *p)
1539{
1540 struct mac_mls *subj, *obj;
1541
1542 if (!mls_enabled)
1543 return (0);
1544

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

1589 if (!mls_dominate_effective(subj, obj))
1590 return (ESRCH);
1591 if (!mls_dominate_effective(obj, subj))
1592 return (EACCES);
1593
1594 return (0);
1595}
1596
1561static int
1562mls_proc_check_debug(struct ucred *cred, struct proc *p)
1563{
1564 struct mac_mls *subj, *obj;
1565
1566 if (!mls_enabled)
1567 return (0);
1568

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

1613 if (!mls_dominate_effective(subj, obj))
1614 return (ESRCH);
1615 if (!mls_dominate_effective(obj, subj))
1616 return (EACCES);
1617
1618 return (0);
1619}
1620
1597static void
1598mls_proc_create_init(struct ucred *cred)
1599{
1600 struct mac_mls *dest;
1601
1602 dest = SLOT(cred->cr_label);
1603
1604 mls_set_effective(dest, MAC_MLS_TYPE_LOW, 0, NULL);
1605 mls_set_range(dest, MAC_MLS_TYPE_LOW, 0, NULL, MAC_MLS_TYPE_HIGH, 0,
1606 NULL);
1607}
1608
1609static void
1610mls_proc_create_swapper(struct ucred *cred)
1611{
1612 struct mac_mls *dest;
1613
1614 dest = SLOT(cred->cr_label);
1615
1616 mls_set_effective(dest, MAC_MLS_TYPE_EQUAL, 0, NULL);
1617 mls_set_range(dest, MAC_MLS_TYPE_LOW, 0, NULL, MAC_MLS_TYPE_HIGH, 0,
1618 NULL);
1619}
1620
1621static int
1622mls_socket_check_deliver(struct socket *so, struct label *solabel,
1623 struct mbuf *m, struct label *mlabel)
1624{
1625 struct mac_mls *p, *s;
1626
1627 if (!mls_enabled)
1628 return (0);

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

2952 .mpo_init = mls_init,
2953
2954 .mpo_bpfdesc_check_receive = mls_bpfdesc_check_receive,
2955 .mpo_bpfdesc_create = mls_bpfdesc_create,
2956 .mpo_bpfdesc_create_mbuf = mls_bpfdesc_create_mbuf,
2957 .mpo_bpfdesc_destroy_label = mls_destroy_label,
2958 .mpo_bpfdesc_init_label = mls_init_label,
2959
1621static int
1622mls_socket_check_deliver(struct socket *so, struct label *solabel,
1623 struct mbuf *m, struct label *mlabel)
1624{
1625 struct mac_mls *p, *s;
1626
1627 if (!mls_enabled)
1628 return (0);

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

2952 .mpo_init = mls_init,
2953
2954 .mpo_bpfdesc_check_receive = mls_bpfdesc_check_receive,
2955 .mpo_bpfdesc_create = mls_bpfdesc_create,
2956 .mpo_bpfdesc_create_mbuf = mls_bpfdesc_create_mbuf,
2957 .mpo_bpfdesc_destroy_label = mls_destroy_label,
2958 .mpo_bpfdesc_init_label = mls_init_label,
2959
2960 .mpo_cred_associate_nfsd = mls_cred_associate_nfsd,
2960 .mpo_cred_check_relabel = mls_cred_check_relabel,
2961 .mpo_cred_check_visible = mls_cred_check_visible,
2962 .mpo_cred_copy_label = mls_copy_label,
2961 .mpo_cred_check_relabel = mls_cred_check_relabel,
2962 .mpo_cred_check_visible = mls_cred_check_visible,
2963 .mpo_cred_copy_label = mls_copy_label,
2964 .mpo_cred_create_init = mls_cred_create_init,
2965 .mpo_cred_create_swapper = mls_cred_create_swapper,
2963 .mpo_cred_destroy_label = mls_destroy_label,
2964 .mpo_cred_externalize_label = mls_externalize_label,
2965 .mpo_cred_init_label = mls_init_label,
2966 .mpo_cred_internalize_label = mls_internalize_label,
2967 .mpo_cred_relabel = mls_cred_relabel,
2968
2969 .mpo_devfs_create_device = mls_devfs_create_device,
2970 .mpo_devfs_create_directory = mls_devfs_create_directory,

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

3046 .mpo_posixsem_check_post = mls_posixsem_check_write,
3047 .mpo_posixsem_check_stat = mls_posixsem_check_rdonly,
3048 .mpo_posixsem_check_unlink = mls_posixsem_check_openunlink,
3049 .mpo_posixsem_check_wait = mls_posixsem_check_write,
3050 .mpo_posixsem_create = mls_posixsem_create,
3051 .mpo_posixsem_destroy_label = mls_destroy_label,
3052 .mpo_posixsem_init_label = mls_init_label,
3053
2966 .mpo_cred_destroy_label = mls_destroy_label,
2967 .mpo_cred_externalize_label = mls_externalize_label,
2968 .mpo_cred_init_label = mls_init_label,
2969 .mpo_cred_internalize_label = mls_internalize_label,
2970 .mpo_cred_relabel = mls_cred_relabel,
2971
2972 .mpo_devfs_create_device = mls_devfs_create_device,
2973 .mpo_devfs_create_directory = mls_devfs_create_directory,

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

3049 .mpo_posixsem_check_post = mls_posixsem_check_write,
3050 .mpo_posixsem_check_stat = mls_posixsem_check_rdonly,
3051 .mpo_posixsem_check_unlink = mls_posixsem_check_openunlink,
3052 .mpo_posixsem_check_wait = mls_posixsem_check_write,
3053 .mpo_posixsem_create = mls_posixsem_create,
3054 .mpo_posixsem_destroy_label = mls_destroy_label,
3055 .mpo_posixsem_init_label = mls_init_label,
3056
3054 .mpo_proc_associate_nfsd = mls_proc_associate_nfsd,
3055 .mpo_proc_check_debug = mls_proc_check_debug,
3056 .mpo_proc_check_sched = mls_proc_check_sched,
3057 .mpo_proc_check_signal = mls_proc_check_signal,
3057 .mpo_proc_check_debug = mls_proc_check_debug,
3058 .mpo_proc_check_sched = mls_proc_check_sched,
3059 .mpo_proc_check_signal = mls_proc_check_signal,
3058 .mpo_proc_create_init = mls_proc_create_init,
3059 .mpo_proc_create_swapper = mls_proc_create_swapper,
3060
3061 .mpo_socket_check_deliver = mls_socket_check_deliver,
3062 .mpo_socket_check_relabel = mls_socket_check_relabel,
3063 .mpo_socket_check_visible = mls_socket_check_visible,
3064 .mpo_socket_copy_label = mls_copy_label,
3065 .mpo_socket_create = mls_socket_create,
3066 .mpo_socket_create_mbuf = mls_socket_create_mbuf,
3067 .mpo_socket_destroy_label = mls_destroy_label,

--- 119 unchanged lines hidden ---
3060
3061 .mpo_socket_check_deliver = mls_socket_check_deliver,
3062 .mpo_socket_check_relabel = mls_socket_check_relabel,
3063 .mpo_socket_check_visible = mls_socket_check_visible,
3064 .mpo_socket_copy_label = mls_copy_label,
3065 .mpo_socket_create = mls_socket_create,
3066 .mpo_socket_create_mbuf = mls_socket_create_mbuf,
3067 .mpo_socket_destroy_label = mls_destroy_label,

--- 119 unchanged lines hidden ---