Deleted Added
full compact
mac_mls.c (122824) mac_mls.c (122875)
1/*-
2 * Copyright (c) 1999, 2000, 2001, 2002 Robert N. M. Watson
3 * Copyright (c) 2001, 2002, 2003 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 Network

--- 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, 2000, 2001, 2002 Robert N. M. Watson
3 * Copyright (c) 2001, 2002, 2003 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 Network

--- 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_mls/mac_mls.c 122824 2003-11-17 01:04:07Z rwatson $
34 * $FreeBSD: head/sys/security/mac_mls/mac_mls.c 122875 2003-11-18 00:39:07Z rwatson $
35 */
36
37/*
38 * Developed by the TrustedBSD Project.
39 * MLS fixed label mandatory confidentiality policy.
40 */
41
42#include <sys/types.h>

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

64#include <fs/devfs/devfs.h>
65
66#include <net/bpfdesc.h>
67#include <net/if.h>
68#include <net/if_types.h>
69#include <net/if_var.h>
70
71#include <netinet/in.h>
35 */
36
37/*
38 * Developed by the TrustedBSD Project.
39 * MLS fixed label mandatory confidentiality policy.
40 */
41
42#include <sys/types.h>

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

64#include <fs/devfs/devfs.h>
65
66#include <net/bpfdesc.h>
67#include <net/if.h>
68#include <net/if_types.h>
69#include <net/if_var.h>
70
71#include <netinet/in.h>
72#include <netinet/in_pcb.h>
72#include <netinet/ip_var.h>
73
74#include <vm/vm.h>
75
76#include <sys/mac_policy.h>
77
78#include <security/mac_mls/mac_mls.h>
79

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

945 MAC_MLS_EXTATTR_NAME, buflen, (char *) &temp, curthread);
946 return (error);
947}
948
949/*
950 * Labeling event operations: IPC object.
951 */
952static void
73#include <netinet/ip_var.h>
74
75#include <vm/vm.h>
76
77#include <sys/mac_policy.h>
78
79#include <security/mac_mls/mac_mls.h>
80

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

946 MAC_MLS_EXTATTR_NAME, buflen, (char *) &temp, curthread);
947 return (error);
948}
949
950/*
951 * Labeling event operations: IPC object.
952 */
953static void
954mac_mls_create_inpcb_from_socket(struct socket *so, struct label *solabel,
955 struct inpcb *inp, struct label *inplabel)
956{
957 struct mac_mls *source, *dest;
958
959 source = SLOT(solabel);
960 dest = SLOT(inplabel);
961
962 mac_mls_copy_single(source, dest);
963}
964
965static void
953mac_mls_create_mbuf_from_socket(struct socket *so, struct label *socketlabel,
954 struct mbuf *m, struct label *mbuflabel)
955{
956 struct mac_mls *source, *dest;
957
958 source = SLOT(socketlabel);
959 dest = SLOT(mbuflabel);
960

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

1224static void
1225mac_mls_update_ipq(struct mbuf *fragment, struct label *fragmentlabel,
1226 struct ipq *ipq, struct label *ipqlabel)
1227{
1228
1229 /* NOOP: we only accept matching labels, so no need to update */
1230}
1231
966mac_mls_create_mbuf_from_socket(struct socket *so, struct label *socketlabel,
967 struct mbuf *m, struct label *mbuflabel)
968{
969 struct mac_mls *source, *dest;
970
971 source = SLOT(socketlabel);
972 dest = SLOT(mbuflabel);
973

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

1237static void
1238mac_mls_update_ipq(struct mbuf *fragment, struct label *fragmentlabel,
1239 struct ipq *ipq, struct label *ipqlabel)
1240{
1241
1242 /* NOOP: we only accept matching labels, so no need to update */
1243}
1244
1245static void
1246mac_mls_inpcb_sosetlabel(struct socket *so, struct label *solabel,
1247 struct inpcb *inp, struct label *inplabel)
1248{
1249 struct mac_mls *source, *dest;
1250
1251 source = SLOT(solabel);
1252 dest = SLOT(inplabel);
1253
1254 mac_mls_copy(source, dest);
1255}
1256
1232/*
1233 * Labeling event operations: processes.
1234 */
1235static void
1236mac_mls_create_cred(struct ucred *cred_parent, struct ucred *cred_child)
1237{
1238 struct mac_mls *source, *dest;
1239

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

1416
1417 p = SLOT(mbuflabel);
1418 i = SLOT(ifnetlabel);
1419
1420 return (mac_mls_single_in_range(p, i) ? 0 : EACCES);
1421}
1422
1423static int
1257/*
1258 * Labeling event operations: processes.
1259 */
1260static void
1261mac_mls_create_cred(struct ucred *cred_parent, struct ucred *cred_child)
1262{
1263 struct mac_mls *source, *dest;
1264

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

1441
1442 p = SLOT(mbuflabel);
1443 i = SLOT(ifnetlabel);
1444
1445 return (mac_mls_single_in_range(p, i) ? 0 : EACCES);
1446}
1447
1448static int
1449mac_mls_check_inpcb_deliver(struct inpcb *inp, struct label *inplabel,
1450 struct mbuf *m, struct label *mlabel)
1451{
1452 struct mac_mls *p, *i;
1453
1454 if (!mac_mls_enabled)
1455 return (0);
1456
1457 p = SLOT(mlabel);
1458 i = SLOT(inplabel);
1459
1460 return (mac_mls_equal_single(p, i) ? 0 : EACCES);
1461}
1462
1463static int
1424mac_mls_check_mount_stat(struct ucred *cred, struct mount *mp,
1425 struct label *mntlabel)
1426{
1427 struct mac_mls *subj, *obj;
1428
1429 if (!mac_mls_enabled)
1430 return (0);
1431

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

2373
2374static struct mac_policy_ops mac_mls_ops =
2375{
2376 .mpo_init = mac_mls_init,
2377 .mpo_init_bpfdesc_label = mac_mls_init_label,
2378 .mpo_init_cred_label = mac_mls_init_label,
2379 .mpo_init_devfsdirent_label = mac_mls_init_label,
2380 .mpo_init_ifnet_label = mac_mls_init_label,
1464mac_mls_check_mount_stat(struct ucred *cred, struct mount *mp,
1465 struct label *mntlabel)
1466{
1467 struct mac_mls *subj, *obj;
1468
1469 if (!mac_mls_enabled)
1470 return (0);
1471

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

2413
2414static struct mac_policy_ops mac_mls_ops =
2415{
2416 .mpo_init = mac_mls_init,
2417 .mpo_init_bpfdesc_label = mac_mls_init_label,
2418 .mpo_init_cred_label = mac_mls_init_label,
2419 .mpo_init_devfsdirent_label = mac_mls_init_label,
2420 .mpo_init_ifnet_label = mac_mls_init_label,
2421 .mpo_init_inpcb_label = mac_mls_init_label_waitcheck,
2381 .mpo_init_ipq_label = mac_mls_init_label_waitcheck,
2382 .mpo_init_mbuf_label = mac_mls_init_label_waitcheck,
2383 .mpo_init_mount_label = mac_mls_init_label,
2384 .mpo_init_mount_fs_label = mac_mls_init_label,
2385 .mpo_init_pipe_label = mac_mls_init_label,
2386 .mpo_init_socket_label = mac_mls_init_label_waitcheck,
2387 .mpo_init_socket_peer_label = mac_mls_init_label_waitcheck,
2388 .mpo_init_vnode_label = mac_mls_init_label,
2389 .mpo_destroy_bpfdesc_label = mac_mls_destroy_label,
2390 .mpo_destroy_cred_label = mac_mls_destroy_label,
2391 .mpo_destroy_devfsdirent_label = mac_mls_destroy_label,
2392 .mpo_destroy_ifnet_label = mac_mls_destroy_label,
2422 .mpo_init_ipq_label = mac_mls_init_label_waitcheck,
2423 .mpo_init_mbuf_label = mac_mls_init_label_waitcheck,
2424 .mpo_init_mount_label = mac_mls_init_label,
2425 .mpo_init_mount_fs_label = mac_mls_init_label,
2426 .mpo_init_pipe_label = mac_mls_init_label,
2427 .mpo_init_socket_label = mac_mls_init_label_waitcheck,
2428 .mpo_init_socket_peer_label = mac_mls_init_label_waitcheck,
2429 .mpo_init_vnode_label = mac_mls_init_label,
2430 .mpo_destroy_bpfdesc_label = mac_mls_destroy_label,
2431 .mpo_destroy_cred_label = mac_mls_destroy_label,
2432 .mpo_destroy_devfsdirent_label = mac_mls_destroy_label,
2433 .mpo_destroy_ifnet_label = mac_mls_destroy_label,
2434 .mpo_destroy_inpcb_label = mac_mls_destroy_label,
2393 .mpo_destroy_ipq_label = mac_mls_destroy_label,
2394 .mpo_destroy_mbuf_label = mac_mls_destroy_label,
2395 .mpo_destroy_mount_label = mac_mls_destroy_label,
2396 .mpo_destroy_mount_fs_label = mac_mls_destroy_label,
2397 .mpo_destroy_pipe_label = mac_mls_destroy_label,
2398 .mpo_destroy_socket_label = mac_mls_destroy_label,
2399 .mpo_destroy_socket_peer_label = mac_mls_destroy_label,
2400 .mpo_destroy_vnode_label = mac_mls_destroy_label,

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

2432 .mpo_relabel_pipe = mac_mls_relabel_pipe,
2433 .mpo_relabel_socket = mac_mls_relabel_socket,
2434 .mpo_set_socket_peer_from_mbuf = mac_mls_set_socket_peer_from_mbuf,
2435 .mpo_set_socket_peer_from_socket = mac_mls_set_socket_peer_from_socket,
2436 .mpo_create_bpfdesc = mac_mls_create_bpfdesc,
2437 .mpo_create_datagram_from_ipq = mac_mls_create_datagram_from_ipq,
2438 .mpo_create_fragment = mac_mls_create_fragment,
2439 .mpo_create_ifnet = mac_mls_create_ifnet,
2435 .mpo_destroy_ipq_label = mac_mls_destroy_label,
2436 .mpo_destroy_mbuf_label = mac_mls_destroy_label,
2437 .mpo_destroy_mount_label = mac_mls_destroy_label,
2438 .mpo_destroy_mount_fs_label = mac_mls_destroy_label,
2439 .mpo_destroy_pipe_label = mac_mls_destroy_label,
2440 .mpo_destroy_socket_label = mac_mls_destroy_label,
2441 .mpo_destroy_socket_peer_label = mac_mls_destroy_label,
2442 .mpo_destroy_vnode_label = mac_mls_destroy_label,

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

2474 .mpo_relabel_pipe = mac_mls_relabel_pipe,
2475 .mpo_relabel_socket = mac_mls_relabel_socket,
2476 .mpo_set_socket_peer_from_mbuf = mac_mls_set_socket_peer_from_mbuf,
2477 .mpo_set_socket_peer_from_socket = mac_mls_set_socket_peer_from_socket,
2478 .mpo_create_bpfdesc = mac_mls_create_bpfdesc,
2479 .mpo_create_datagram_from_ipq = mac_mls_create_datagram_from_ipq,
2480 .mpo_create_fragment = mac_mls_create_fragment,
2481 .mpo_create_ifnet = mac_mls_create_ifnet,
2482 .mpo_create_inpcb_from_socket = mac_mls_create_inpcb_from_socket,
2440 .mpo_create_ipq = mac_mls_create_ipq,
2441 .mpo_create_mbuf_from_mbuf = mac_mls_create_mbuf_from_mbuf,
2442 .mpo_create_mbuf_linklayer = mac_mls_create_mbuf_linklayer,
2443 .mpo_create_mbuf_from_bpfdesc = mac_mls_create_mbuf_from_bpfdesc,
2444 .mpo_create_mbuf_from_ifnet = mac_mls_create_mbuf_from_ifnet,
2445 .mpo_create_mbuf_multicast_encap = mac_mls_create_mbuf_multicast_encap,
2446 .mpo_create_mbuf_netlayer = mac_mls_create_mbuf_netlayer,
2447 .mpo_fragment_match = mac_mls_fragment_match,
2448 .mpo_relabel_ifnet = mac_mls_relabel_ifnet,
2449 .mpo_update_ipq = mac_mls_update_ipq,
2483 .mpo_create_ipq = mac_mls_create_ipq,
2484 .mpo_create_mbuf_from_mbuf = mac_mls_create_mbuf_from_mbuf,
2485 .mpo_create_mbuf_linklayer = mac_mls_create_mbuf_linklayer,
2486 .mpo_create_mbuf_from_bpfdesc = mac_mls_create_mbuf_from_bpfdesc,
2487 .mpo_create_mbuf_from_ifnet = mac_mls_create_mbuf_from_ifnet,
2488 .mpo_create_mbuf_multicast_encap = mac_mls_create_mbuf_multicast_encap,
2489 .mpo_create_mbuf_netlayer = mac_mls_create_mbuf_netlayer,
2490 .mpo_fragment_match = mac_mls_fragment_match,
2491 .mpo_relabel_ifnet = mac_mls_relabel_ifnet,
2492 .mpo_update_ipq = mac_mls_update_ipq,
2493 .mpo_inpcb_sosetlabel = mac_mls_inpcb_sosetlabel,
2450 .mpo_create_cred = mac_mls_create_cred,
2451 .mpo_create_proc0 = mac_mls_create_proc0,
2452 .mpo_create_proc1 = mac_mls_create_proc1,
2453 .mpo_relabel_cred = mac_mls_relabel_cred,
2454 .mpo_check_bpfdesc_receive = mac_mls_check_bpfdesc_receive,
2455 .mpo_check_cred_relabel = mac_mls_check_cred_relabel,
2456 .mpo_check_cred_visible = mac_mls_check_cred_visible,
2457 .mpo_check_ifnet_relabel = mac_mls_check_ifnet_relabel,
2458 .mpo_check_ifnet_transmit = mac_mls_check_ifnet_transmit,
2494 .mpo_create_cred = mac_mls_create_cred,
2495 .mpo_create_proc0 = mac_mls_create_proc0,
2496 .mpo_create_proc1 = mac_mls_create_proc1,
2497 .mpo_relabel_cred = mac_mls_relabel_cred,
2498 .mpo_check_bpfdesc_receive = mac_mls_check_bpfdesc_receive,
2499 .mpo_check_cred_relabel = mac_mls_check_cred_relabel,
2500 .mpo_check_cred_visible = mac_mls_check_cred_visible,
2501 .mpo_check_ifnet_relabel = mac_mls_check_ifnet_relabel,
2502 .mpo_check_ifnet_transmit = mac_mls_check_ifnet_transmit,
2503 .mpo_check_inpcb_deliver = mac_mls_check_inpcb_deliver,
2459 .mpo_check_mount_stat = mac_mls_check_mount_stat,
2460 .mpo_check_pipe_ioctl = mac_mls_check_pipe_ioctl,
2461 .mpo_check_pipe_poll = mac_mls_check_pipe_poll,
2462 .mpo_check_pipe_read = mac_mls_check_pipe_read,
2463 .mpo_check_pipe_relabel = mac_mls_check_pipe_relabel,
2464 .mpo_check_pipe_stat = mac_mls_check_pipe_stat,
2465 .mpo_check_pipe_write = mac_mls_check_pipe_write,
2466 .mpo_check_proc_debug = mac_mls_check_proc_debug,

--- 42 unchanged lines hidden ---
2504 .mpo_check_mount_stat = mac_mls_check_mount_stat,
2505 .mpo_check_pipe_ioctl = mac_mls_check_pipe_ioctl,
2506 .mpo_check_pipe_poll = mac_mls_check_pipe_poll,
2507 .mpo_check_pipe_read = mac_mls_check_pipe_read,
2508 .mpo_check_pipe_relabel = mac_mls_check_pipe_relabel,
2509 .mpo_check_pipe_stat = mac_mls_check_pipe_stat,
2510 .mpo_check_pipe_write = mac_mls_check_pipe_write,
2511 .mpo_check_proc_debug = mac_mls_check_proc_debug,

--- 42 unchanged lines hidden ---