Deleted Added
full compact
mac_lomac.c (168951) mac_lomac.c (168954)
1/*-
2 * Copyright (c) 1999-2002, 2007 Robert N. M. Watson
3 * Copyright (c) 2001-2005 Networks Associates Technology, Inc.
4 * All rights reserved.
5 *
6 * This software was developed by Robert Watson for the TrustedBSD Project.
7 *
8 * This software was developed for the FreeBSD Project in part by NAI Labs,

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

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

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

26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 * SUCH DAMAGE.
33 *
34 * $FreeBSD: head/sys/security/mac_lomac/mac_lomac.c 168951 2007-04-22 15:31:22Z rwatson $
34 * $FreeBSD: head/sys/security/mac_lomac/mac_lomac.c 168954 2007-04-22 16:18:10Z rwatson $
35 */
36
37/*
38 * Developed by the TrustedBSD Project.
39 *
40 * Low-watermark floating label mandatory integrity policy.
41 */
42

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

944 source = SLOT(cred->cr_label);
945 dest = SLOT(delabel);
946
947 mac_lomac_copy_single(source, dest);
948}
949
950static void
951mac_lomac_create_mount(struct ucred *cred, struct mount *mp,
35 */
36
37/*
38 * Developed by the TrustedBSD Project.
39 *
40 * Low-watermark floating label mandatory integrity policy.
41 */
42

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

944 source = SLOT(cred->cr_label);
945 dest = SLOT(delabel);
946
947 mac_lomac_copy_single(source, dest);
948}
949
950static void
951mac_lomac_create_mount(struct ucred *cred, struct mount *mp,
952 struct label *mntlabel, struct label *fslabel)
952 struct label *mntlabel)
953{
954 struct mac_lomac *source, *dest;
955
956 source = SLOT(cred->cr_label);
957 dest = SLOT(mntlabel);
958 mac_lomac_copy_single(source, dest);
953{
954 struct mac_lomac *source, *dest;
955
956 source = SLOT(cred->cr_label);
957 dest = SLOT(mntlabel);
958 mac_lomac_copy_single(source, dest);
959 dest = SLOT(fslabel);
960 mac_lomac_copy_single(source, dest);
961}
962
963static void
964mac_lomac_relabel_vnode(struct ucred *cred, struct vnode *vp,
965 struct label *vnodelabel, struct label *label)
966{
967 struct mac_lomac *source, *dest;
968

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

981
982 source = SLOT(vnodelabel);
983 dest = SLOT(direntlabel);
984
985 mac_lomac_copy(source, dest);
986}
987
988static void
959}
960
961static void
962mac_lomac_relabel_vnode(struct ucred *cred, struct vnode *vp,
963 struct label *vnodelabel, struct label *label)
964{
965 struct mac_lomac *source, *dest;
966

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

979
980 source = SLOT(vnodelabel);
981 dest = SLOT(direntlabel);
982
983 mac_lomac_copy(source, dest);
984}
985
986static void
989mac_lomac_associate_vnode_devfs(struct mount *mp, struct label *fslabel,
987mac_lomac_associate_vnode_devfs(struct mount *mp, struct label *mntlabel,
990 struct devfs_dirent *de, struct label *delabel, struct vnode *vp,
991 struct label *vlabel)
992{
993 struct mac_lomac *source, *dest;
994
995 source = SLOT(delabel);
996 dest = SLOT(vlabel);
997
998 mac_lomac_copy_single(source, dest);
999}
1000
1001static int
988 struct devfs_dirent *de, struct label *delabel, struct vnode *vp,
989 struct label *vlabel)
990{
991 struct mac_lomac *source, *dest;
992
993 source = SLOT(delabel);
994 dest = SLOT(vlabel);
995
996 mac_lomac_copy_single(source, dest);
997}
998
999static int
1002mac_lomac_associate_vnode_extattr(struct mount *mp, struct label *fslabel,
1000mac_lomac_associate_vnode_extattr(struct mount *mp, struct label *mntlabel,
1003 struct vnode *vp, struct label *vlabel)
1004{
1005 struct mac_lomac temp, *source, *dest;
1006 int buflen, error;
1007
1001 struct vnode *vp, struct label *vlabel)
1002{
1003 struct mac_lomac temp, *source, *dest;
1004 int buflen, error;
1005
1008 source = SLOT(fslabel);
1006 source = SLOT(mntlabel);
1009 dest = SLOT(vlabel);
1010
1011 buflen = sizeof(temp);
1012 bzero(&temp, buflen);
1013
1014 error = vn_extattr_get(vp, IO_NODELOCKED, MAC_LOMAC_EXTATTR_NAMESPACE,
1015 MAC_LOMAC_EXTATTR_NAME, &buflen, (char *)&temp, curthread);
1016 if (error == ENOATTR || error == EOPNOTSUPP) {
1007 dest = SLOT(vlabel);
1008
1009 buflen = sizeof(temp);
1010 bzero(&temp, buflen);
1011
1012 error = vn_extattr_get(vp, IO_NODELOCKED, MAC_LOMAC_EXTATTR_NAMESPACE,
1013 MAC_LOMAC_EXTATTR_NAME, &buflen, (char *)&temp, curthread);
1014 if (error == ENOATTR || error == EOPNOTSUPP) {
1017 /* Fall back to the fslabel. */
1015 /* Fall back to the mntlabel. */
1018 mac_lomac_copy_single(source, dest);
1019 return (0);
1020 } else if (error)
1021 return (error);
1022
1023 if (buflen != sizeof(temp)) {
1024 if (buflen != sizeof(temp) - sizeof(temp.ml_auxsingle)) {
1025 printf("mac_lomac_associate_vnode_extattr: bad size %d\n",

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

1042 }
1043
1044 mac_lomac_copy_single(&temp, dest);
1045 return (0);
1046}
1047
1048static void
1049mac_lomac_associate_vnode_singlelabel(struct mount *mp,
1016 mac_lomac_copy_single(source, dest);
1017 return (0);
1018 } else if (error)
1019 return (error);
1020
1021 if (buflen != sizeof(temp)) {
1022 if (buflen != sizeof(temp) - sizeof(temp.ml_auxsingle)) {
1023 printf("mac_lomac_associate_vnode_extattr: bad size %d\n",

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

1040 }
1041
1042 mac_lomac_copy_single(&temp, dest);
1043 return (0);
1044}
1045
1046static void
1047mac_lomac_associate_vnode_singlelabel(struct mount *mp,
1050 struct label *fslabel, struct vnode *vp, struct label *vlabel)
1048 struct label *mntlabel, struct vnode *vp, struct label *vlabel)
1051{
1052 struct mac_lomac *source, *dest;
1053
1049{
1050 struct mac_lomac *source, *dest;
1051
1054 source = SLOT(fslabel);
1052 source = SLOT(mntlabel);
1055 dest = SLOT(vlabel);
1056
1057 mac_lomac_copy_single(source, dest);
1058}
1059
1060static int
1061mac_lomac_create_vnode_extattr(struct ucred *cred, struct mount *mp,
1053 dest = SLOT(vlabel);
1054
1055 mac_lomac_copy_single(source, dest);
1056}
1057
1058static int
1059mac_lomac_create_vnode_extattr(struct ucred *cred, struct mount *mp,
1062 struct label *fslabel, struct vnode *dvp, struct label *dlabel,
1060 struct label *mntlabel, struct vnode *dvp, struct label *dlabel,
1063 struct vnode *vp, struct label *vlabel, struct componentname *cnp)
1064{
1065 struct mac_lomac *source, *dest, *dir, temp;
1066 size_t buflen;
1067 int error;
1068
1069 buflen = sizeof(temp);
1070 bzero(&temp, buflen);

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

2828 .mpo_init_cred_label = mac_lomac_init_label,
2829 .mpo_init_devfsdirent_label = mac_lomac_init_label,
2830 .mpo_init_ifnet_label = mac_lomac_init_label,
2831 .mpo_init_syncache_label = mac_lomac_init_label_waitcheck,
2832 .mpo_init_inpcb_label = mac_lomac_init_label_waitcheck,
2833 .mpo_init_ipq_label = mac_lomac_init_label_waitcheck,
2834 .mpo_init_mbuf_label = mac_lomac_init_label_waitcheck,
2835 .mpo_init_mount_label = mac_lomac_init_label,
1061 struct vnode *vp, struct label *vlabel, struct componentname *cnp)
1062{
1063 struct mac_lomac *source, *dest, *dir, temp;
1064 size_t buflen;
1065 int error;
1066
1067 buflen = sizeof(temp);
1068 bzero(&temp, buflen);

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

2826 .mpo_init_cred_label = mac_lomac_init_label,
2827 .mpo_init_devfsdirent_label = mac_lomac_init_label,
2828 .mpo_init_ifnet_label = mac_lomac_init_label,
2829 .mpo_init_syncache_label = mac_lomac_init_label_waitcheck,
2830 .mpo_init_inpcb_label = mac_lomac_init_label_waitcheck,
2831 .mpo_init_ipq_label = mac_lomac_init_label_waitcheck,
2832 .mpo_init_mbuf_label = mac_lomac_init_label_waitcheck,
2833 .mpo_init_mount_label = mac_lomac_init_label,
2836 .mpo_init_mount_fs_label = mac_lomac_init_label,
2837 .mpo_init_pipe_label = mac_lomac_init_label,
2838 .mpo_init_proc_label = mac_lomac_init_proc_label,
2839 .mpo_init_socket_label = mac_lomac_init_label_waitcheck,
2840 .mpo_init_socket_peer_label = mac_lomac_init_label_waitcheck,
2841 .mpo_init_vnode_label = mac_lomac_init_label,
2842 .mpo_init_syncache_from_inpcb = mac_lomac_init_syncache_from_inpcb,
2843 .mpo_destroy_bpfdesc_label = mac_lomac_destroy_label,
2844 .mpo_destroy_cred_label = mac_lomac_destroy_label,
2845 .mpo_destroy_devfsdirent_label = mac_lomac_destroy_label,
2846 .mpo_destroy_ifnet_label = mac_lomac_destroy_label,
2847 .mpo_destroy_inpcb_label = mac_lomac_destroy_label,
2848 .mpo_destroy_ipq_label = mac_lomac_destroy_label,
2849 .mpo_destroy_mbuf_label = mac_lomac_destroy_label,
2850 .mpo_destroy_mount_label = mac_lomac_destroy_label,
2834 .mpo_init_pipe_label = mac_lomac_init_label,
2835 .mpo_init_proc_label = mac_lomac_init_proc_label,
2836 .mpo_init_socket_label = mac_lomac_init_label_waitcheck,
2837 .mpo_init_socket_peer_label = mac_lomac_init_label_waitcheck,
2838 .mpo_init_vnode_label = mac_lomac_init_label,
2839 .mpo_init_syncache_from_inpcb = mac_lomac_init_syncache_from_inpcb,
2840 .mpo_destroy_bpfdesc_label = mac_lomac_destroy_label,
2841 .mpo_destroy_cred_label = mac_lomac_destroy_label,
2842 .mpo_destroy_devfsdirent_label = mac_lomac_destroy_label,
2843 .mpo_destroy_ifnet_label = mac_lomac_destroy_label,
2844 .mpo_destroy_inpcb_label = mac_lomac_destroy_label,
2845 .mpo_destroy_ipq_label = mac_lomac_destroy_label,
2846 .mpo_destroy_mbuf_label = mac_lomac_destroy_label,
2847 .mpo_destroy_mount_label = mac_lomac_destroy_label,
2851 .mpo_destroy_mount_fs_label = mac_lomac_destroy_label,
2852 .mpo_destroy_pipe_label = mac_lomac_destroy_label,
2853 .mpo_destroy_proc_label = mac_lomac_destroy_proc_label,
2854 .mpo_destroy_syncache_label = mac_lomac_destroy_label,
2855 .mpo_destroy_socket_label = mac_lomac_destroy_label,
2856 .mpo_destroy_socket_peer_label = mac_lomac_destroy_label,
2857 .mpo_destroy_vnode_label = mac_lomac_destroy_label,
2858 .mpo_copy_cred_label = mac_lomac_copy_label,
2859 .mpo_copy_ifnet_label = mac_lomac_copy_label,

--- 109 unchanged lines hidden ---
2848 .mpo_destroy_pipe_label = mac_lomac_destroy_label,
2849 .mpo_destroy_proc_label = mac_lomac_destroy_proc_label,
2850 .mpo_destroy_syncache_label = mac_lomac_destroy_label,
2851 .mpo_destroy_socket_label = mac_lomac_destroy_label,
2852 .mpo_destroy_socket_peer_label = mac_lomac_destroy_label,
2853 .mpo_destroy_vnode_label = mac_lomac_destroy_label,
2854 .mpo_copy_cred_label = mac_lomac_copy_label,
2855 .mpo_copy_ifnet_label = mac_lomac_copy_label,

--- 109 unchanged lines hidden ---