Deleted Added
sdiff udiff text old ( 173112 ) new ( 173138 )
full compact
1/*-
2 * Copyright (c) 1999-2002, 2007 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_test/mac_test.c 173138 2007-10-29 13:33:06Z rwatson $
39 */
40
41/*
42 * Developed by the TrustedBSD Project.
43 *
44 * MAC Test policy - tests MAC Framework labeling by assigning object class
45 * magic numbers to each label and validates that each time an object label
46 * is passed into the policy, it has a consistent object type, catching

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

144} while (0)
145
146#define LABEL_NOTFREE(label) do { \
147 KASSERT(SLOT(label) != MAGIC_FREE, \
148 ("%s: destroyed label", __func__)); \
149} while (0)
150
151/*
152 * Functions that span multiple entry points.
153 */
154COUNTER_DECL(internalize_label);
155static int
156test_internalize_label(struct label *label, char *element_name,
157 char *element_data, int *claimed)
158{
159
160 LABEL_NOTFREE(label);
161 COUNTER_INC(internalize_label);
162
163 return (0);
164}
165
166/*
167 * Object-specific entry point implementations are sorted alphabetically by
168 * object type name and then by operation.
169 */
170COUNTER_DECL(bpfdesc_check_receive);
171static int
172test_bpfdesc_check_receive(struct bpf_d *bpf_d, struct label *bpflabel,
173 struct ifnet *ifp, struct label *ifplabel)
174{
175
176 LABEL_CHECK(bpflabel, MAGIC_BPF);
177 LABEL_CHECK(ifplabel, MAGIC_IFNET);
178 COUNTER_INC(bpfdesc_check_receive);
179
180 return (0);
181}
182
183COUNTER_DECL(bpfdesc_create);
184static void
185test_bpfdesc_create(struct ucred *cred, struct bpf_d *bpf_d,
186 struct label *bpflabel)
187{
188
189 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
190 LABEL_CHECK(bpflabel, MAGIC_BPF);
191 COUNTER_INC(bpfdesc_create);
192}
193
194COUNTER_DECL(bpfdesc_create_mbuf);
195static void
196test_bpfdesc_create_mbuf(struct bpf_d *bpf_d, struct label *bpflabel,
197 struct mbuf *mbuf, struct label *mbuflabel)
198{
199
200 LABEL_CHECK(bpflabel, MAGIC_BPF);
201 LABEL_CHECK(mbuflabel, MAGIC_MBUF);
202 COUNTER_INC(bpfdesc_create_mbuf);
203}
204
205COUNTER_DECL(bpfdesc_destroy_label);
206static void
207test_bpfdesc_destroy_label(struct label *label)
208{
209
210 LABEL_DESTROY(label, MAGIC_BPF);
211 COUNTER_INC(bpfdesc_destroy_label);
212}
213
214COUNTER_DECL(bpfdesc_init_label);
215static void
216test_bpfdesc_init_label(struct label *label)
217{
218
219 LABEL_INIT(label, MAGIC_BPF);
220 COUNTER_INC(bpfdesc_init_label);
221}
222
223COUNTER_DECL(cred_check_relabel);
224static int
225test_cred_check_relabel(struct ucred *cred, struct label *newlabel)
226{
227
228 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
229 LABEL_CHECK(newlabel, MAGIC_CRED);
230 COUNTER_INC(cred_check_relabel);
231
232 return (0);
233}
234
235COUNTER_DECL(cred_check_visible);
236static int
237test_cred_check_visible(struct ucred *u1, struct ucred *u2)
238{
239
240 LABEL_CHECK(u1->cr_label, MAGIC_CRED);
241 LABEL_CHECK(u2->cr_label, MAGIC_CRED);
242 COUNTER_INC(cred_check_visible);
243
244 return (0);
245}
246
247COUNTER_DECL(cred_copy_label);
248static void
249test_cred_copy_label(struct label *src, struct label *dest)
250{
251
252 LABEL_CHECK(src, MAGIC_CRED);
253 LABEL_CHECK(dest, MAGIC_CRED);
254 COUNTER_INC(cred_copy_label);
255}
256
257COUNTER_DECL(cred_destroy_label);
258static void
259test_cred_destroy_label(struct label *label)
260{
261
262 LABEL_DESTROY(label, MAGIC_CRED);
263 COUNTER_INC(cred_destroy_label);
264}
265
266COUNTER_DECL(cred_externalize_label);
267static int
268test_cred_externalize_label(struct label *label, char *element_name,
269 struct sbuf *sb, int *claimed)
270{
271
272 LABEL_CHECK(label, MAGIC_CRED);
273 COUNTER_INC(cred_externalize_label);
274
275 return (0);
276}
277
278COUNTER_DECL(cred_init_label);
279static void
280test_cred_init_label(struct label *label)
281{
282
283 LABEL_INIT(label, MAGIC_CRED);
284 COUNTER_INC(cred_init_label);
285}
286
287COUNTER_DECL(cred_relabel);
288static void
289test_cred_relabel(struct ucred *cred, struct label *newlabel)
290{
291
292 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
293 LABEL_CHECK(newlabel, MAGIC_CRED);
294 COUNTER_INC(cred_relabel);
295}
296
297COUNTER_DECL(devfs_create_device);
298static void
299test_devfs_create_device(struct ucred *cred, struct mount *mp,
300 struct cdev *dev, struct devfs_dirent *de, struct label *delabel)
301{
302
303 if (cred != NULL)
304 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
305 LABEL_CHECK(delabel, MAGIC_DEVFS);
306 COUNTER_INC(devfs_create_device);
307}
308
309COUNTER_DECL(devfs_create_directory);
310static void
311test_devfs_create_directory(struct mount *mp, char *dirname,
312 int dirnamelen, struct devfs_dirent *de, struct label *delabel)
313{
314
315 LABEL_CHECK(delabel, MAGIC_DEVFS);
316 COUNTER_INC(devfs_create_directory);
317}
318
319COUNTER_DECL(devfs_create_symlink);
320static void
321test_devfs_create_symlink(struct ucred *cred, struct mount *mp,
322 struct devfs_dirent *dd, struct label *ddlabel, struct devfs_dirent *de,
323 struct label *delabel)
324{
325
326 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
327 LABEL_CHECK(ddlabel, MAGIC_DEVFS);
328 LABEL_CHECK(delabel, MAGIC_DEVFS);
329 COUNTER_INC(devfs_create_symlink);
330}
331
332COUNTER_DECL(devfs_destroy_label);
333static void
334test_devfs_destroy_label(struct label *label)
335{
336
337 LABEL_DESTROY(label, MAGIC_DEVFS);
338 COUNTER_INC(devfs_destroy_label);
339}
340
341COUNTER_DECL(devfs_init_label);
342static void
343test_devfs_init_label(struct label *label)
344{
345
346 LABEL_INIT(label, MAGIC_DEVFS);
347 COUNTER_INC(devfs_init_label);
348}
349
350COUNTER_DECL(devfs_update);
351static void
352test_devfs_update(struct mount *mp, struct devfs_dirent *devfs_dirent,
353 struct label *direntlabel, struct vnode *vp, struct label *vplabel)
354{
355
356 LABEL_CHECK(direntlabel, MAGIC_DEVFS);
357 LABEL_CHECK(vplabel, MAGIC_VNODE);
358 COUNTER_INC(devfs_update);
359}
360
361COUNTER_DECL(devfs_vnode_associate);
362static void
363test_devfs_vnode_associate(struct mount *mp, struct label *mplabel,
364 struct devfs_dirent *de, struct label *delabel, struct vnode *vp,
365 struct label *vplabel)
366{
367
368 LABEL_CHECK(mplabel, MAGIC_MOUNT);
369 LABEL_CHECK(delabel, MAGIC_DEVFS);
370 LABEL_CHECK(vplabel, MAGIC_VNODE);
371 COUNTER_INC(devfs_vnode_associate);
372}
373
374COUNTER_DECL(ifnet_check_relabel);
375static int
376test_ifnet_check_relabel(struct ucred *cred, struct ifnet *ifp,
377 struct label *ifplabel, struct label *newlabel)
378{
379
380 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
381 LABEL_CHECK(ifplabel, MAGIC_IFNET);
382 LABEL_CHECK(newlabel, MAGIC_IFNET);
383 COUNTER_INC(ifnet_check_relabel);
384
385 return (0);
386}
387
388COUNTER_DECL(ifnet_check_transmit);
389static int
390test_ifnet_check_transmit(struct ifnet *ifp, struct label *ifplabel,
391 struct mbuf *m, struct label *mbuflabel)
392{
393
394 LABEL_CHECK(ifplabel, MAGIC_IFNET);
395 LABEL_CHECK(mbuflabel, MAGIC_MBUF);
396 COUNTER_INC(ifnet_check_transmit);
397
398 return (0);
399}
400
401COUNTER_DECL(ifnet_copy_label);
402static void
403test_ifnet_copy_label(struct label *src, struct label *dest)
404{
405
406 LABEL_CHECK(src, MAGIC_IFNET);
407 LABEL_CHECK(dest, MAGIC_IFNET);
408 COUNTER_INC(ifnet_copy_label);
409}
410
411COUNTER_DECL(ifnet_create);
412static void
413test_ifnet_create(struct ifnet *ifp, struct label *ifplabel)
414{
415
416 LABEL_CHECK(ifplabel, MAGIC_IFNET);
417 COUNTER_INC(ifnet_create);
418}
419
420COUNTER_DECL(ifnet_create_mbuf);
421static void
422test_ifnet_create_mbuf(struct ifnet *ifp, struct label *ifplabel,
423 struct mbuf *m, struct label *mbuflabel)
424{
425
426 LABEL_CHECK(ifplabel, MAGIC_IFNET);
427 LABEL_CHECK(mbuflabel, MAGIC_MBUF);
428 COUNTER_INC(ifnet_create_mbuf);
429}
430
431COUNTER_DECL(ifnet_destroy_label);
432static void
433test_ifnet_destroy_label(struct label *label)
434{
435
436 LABEL_DESTROY(label, MAGIC_IFNET);
437 COUNTER_INC(ifnet_destroy_label);
438}
439
440COUNTER_DECL(ifnet_externalize_label);
441static int
442test_ifnet_externalize_label(struct label *label, char *element_name,
443 struct sbuf *sb, int *claimed)
444{
445
446 LABEL_CHECK(label, MAGIC_IFNET);
447 COUNTER_INC(ifnet_externalize_label);
448
449 return (0);
450}
451
452COUNTER_DECL(ifnet_init_label);
453static void
454test_ifnet_init_label(struct label *label)
455{
456
457 LABEL_INIT(label, MAGIC_IFNET);
458 COUNTER_INC(ifnet_init_label);
459}
460
461COUNTER_DECL(ifnet_relabel);
462static void
463test_ifnet_relabel(struct ucred *cred, struct ifnet *ifp,
464 struct label *ifplabel, struct label *newlabel)
465{
466
467 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
468 LABEL_CHECK(ifplabel, MAGIC_IFNET);
469 LABEL_CHECK(newlabel, MAGIC_IFNET);
470 COUNTER_INC(ifnet_relabel);
471}
472
473COUNTER_DECL(inpcb_check_deliver);
474static int
475test_inpcb_check_deliver(struct inpcb *inp, struct label *inplabel,
476 struct mbuf *m, struct label *mlabel)
477{
478
479 LABEL_CHECK(inplabel, MAGIC_INPCB);
480 LABEL_CHECK(mlabel, MAGIC_MBUF);
481 COUNTER_INC(inpcb_check_deliver);
482
483 return (0);
484}
485
486COUNTER_DECL(inpcb_create);
487static void
488test_inpcb_create(struct socket *so, struct label *solabel,
489 struct inpcb *inp, struct label *inplabel)
490{
491
492 LABEL_CHECK(solabel, MAGIC_SOCKET);
493 LABEL_CHECK(inplabel, MAGIC_INPCB);
494 COUNTER_INC(inpcb_create);
495}
496
497COUNTER_DECL(inpcb_create_mbuf);
498static void
499test_inpcb_create_mbuf(struct inpcb *inp, struct label *inplabel,
500 struct mbuf *m, struct label *mlabel)
501{
502
503 LABEL_CHECK(inplabel, MAGIC_INPCB);
504 LABEL_CHECK(mlabel, MAGIC_MBUF);
505 COUNTER_INC(inpcb_create_mbuf);
506}
507
508COUNTER_DECL(inpcb_destroy_label);
509static void
510test_inpcb_destroy_label(struct label *label)
511{
512
513 LABEL_DESTROY(label, MAGIC_INPCB);
514 COUNTER_INC(inpcb_destroy_label);
515}
516
517COUNTER_DECL(inpcb_init_label);
518static int
519test_inpcb_init_label(struct label *label, int flag)
520{
521
522 if (flag & M_WAITOK)
523 WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL,
524 "test_inpcb_init_label() at %s:%d", __FILE__,
525 __LINE__);
526
527 LABEL_INIT(label, MAGIC_INPCB);
528 COUNTER_INC(inpcb_init_label);
529 return (0);
530}
531
532COUNTER_DECL(inpcb_sosetlabel);
533static void
534test_inpcb_sosetlabel(struct socket *so, struct label *solabel,
535 struct inpcb *inp, struct label *inplabel)
536{
537
538 LABEL_CHECK(solabel, MAGIC_SOCKET);
539 LABEL_CHECK(inplabel, MAGIC_INPCB);
540 COUNTER_INC(inpcb_sosetlabel);
541}
542
543COUNTER_DECL(ipq_create);
544static void
545test_ipq_create(struct mbuf *fragment, struct label *fragmentlabel,
546 struct ipq *ipq, struct label *ipqlabel)
547{
548
549 LABEL_CHECK(fragmentlabel, MAGIC_MBUF);
550 LABEL_CHECK(ipqlabel, MAGIC_IPQ);
551 COUNTER_INC(ipq_create);
552}
553
554COUNTER_DECL(ipq_destroy_label);
555static void
556test_ipq_destroy_label(struct label *label)
557{
558
559 LABEL_DESTROY(label, MAGIC_IPQ);
560 COUNTER_INC(ipq_destroy_label);
561}
562
563COUNTER_DECL(ipq_init_label);
564static int
565test_ipq_init_label(struct label *label, int flag)
566{
567
568 if (flag & M_WAITOK)
569 WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL,
570 "test_ipq_init_label() at %s:%d", __FILE__,
571 __LINE__);
572
573 LABEL_INIT(label, MAGIC_IPQ);
574 COUNTER_INC(ipq_init_label);
575 return (0);
576}
577
578COUNTER_DECL(ipq_match);
579static int
580test_ipq_match(struct mbuf *fragment, struct label *fragmentlabel,
581 struct ipq *ipq, struct label *ipqlabel)
582{
583
584 LABEL_CHECK(fragmentlabel, MAGIC_MBUF);
585 LABEL_CHECK(ipqlabel, MAGIC_IPQ);
586 COUNTER_INC(ipq_match);
587
588 return (1);
589}
590
591COUNTER_DECL(ipq_reassemble);
592static void
593test_ipq_reassemble(struct ipq *ipq, struct label *ipqlabel,
594 struct mbuf *datagram, struct label *datagramlabel)
595{
596
597 LABEL_CHECK(ipqlabel, MAGIC_IPQ);
598 LABEL_CHECK(datagramlabel, MAGIC_MBUF);
599 COUNTER_INC(ipq_reassemble);
600}
601
602COUNTER_DECL(ipq_update);
603static void
604test_ipq_update(struct mbuf *fragment, struct label *fragmentlabel,
605 struct ipq *ipq, struct label *ipqlabel)
606{
607
608 LABEL_CHECK(fragmentlabel, MAGIC_MBUF);
609 LABEL_CHECK(ipqlabel, MAGIC_IPQ);
610 COUNTER_INC(ipq_update);
611}
612
613COUNTER_DECL(kenv_check_dump);
614static int
615test_kenv_check_dump(struct ucred *cred)
616{
617
618 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
619 COUNTER_INC(kenv_check_dump);
620
621 return (0);
622}
623
624COUNTER_DECL(kenv_check_get);
625static int
626test_kenv_check_get(struct ucred *cred, char *name)
627{
628
629 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
630 COUNTER_INC(kenv_check_get);
631
632 return (0);
633}
634
635COUNTER_DECL(kenv_check_set);
636static int
637test_kenv_check_set(struct ucred *cred, char *name, char *value)
638{
639
640 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
641 COUNTER_INC(kenv_check_set);
642
643 return (0);
644}
645
646COUNTER_DECL(kenv_check_unset);
647static int
648test_kenv_check_unset(struct ucred *cred, char *name)
649{
650
651 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
652 COUNTER_INC(kenv_check_unset);
653
654 return (0);
655}
656
657COUNTER_DECL(kld_check_load);
658static int
659test_kld_check_load(struct ucred *cred, struct vnode *vp,
660 struct label *label)
661{
662
663 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
664 LABEL_CHECK(label, MAGIC_VNODE);
665 COUNTER_INC(kld_check_load);
666
667 return (0);
668}
669
670COUNTER_DECL(kld_check_stat);
671static int
672test_kld_check_stat(struct ucred *cred)
673{
674
675 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
676 COUNTER_INC(kld_check_stat);
677
678 return (0);
679}
680
681COUNTER_DECL(mbuf_copy_label);
682static void
683test_mbuf_copy_label(struct label *src, struct label *dest)
684{
685
686 LABEL_CHECK(src, MAGIC_MBUF);
687 LABEL_CHECK(dest, MAGIC_MBUF);
688 COUNTER_INC(mbuf_copy_label);
689}
690
691COUNTER_DECL(mbuf_destroy_label);
692static void
693test_mbuf_destroy_label(struct label *label)
694{
695
696 /*
697 * If we're loaded dynamically, there may be mbufs in flight that
698 * didn't have label storage allocated for them. Handle this
699 * gracefully.
700 */
701 if (label == NULL)
702 return;
703
704 LABEL_DESTROY(label, MAGIC_MBUF);
705 COUNTER_INC(mbuf_destroy_label);
706}
707
708COUNTER_DECL(mbuf_init_label);
709static int
710test_mbuf_init_label(struct label *label, int flag)
711{
712
713 if (flag & M_WAITOK)
714 WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL,
715 "test_mbuf_init_label() at %s:%d", __FILE__,
716 __LINE__);
717
718 LABEL_INIT(label, MAGIC_MBUF);
719 COUNTER_INC(mbuf_init_label);
720 return (0);
721}
722
723COUNTER_DECL(mount_check_stat);
724static int
725test_mount_check_stat(struct ucred *cred, struct mount *mp,
726 struct label *mplabel)
727{
728
729 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
730 LABEL_CHECK(mplabel, MAGIC_MOUNT);
731 COUNTER_INC(mount_check_stat);
732
733 return (0);
734}
735
736COUNTER_DECL(mount_create);
737static void
738test_mount_create(struct ucred *cred, struct mount *mp,
739 struct label *mplabel)
740{
741
742 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
743 LABEL_CHECK(mplabel, MAGIC_MOUNT);
744 COUNTER_INC(mount_create);
745}
746
747COUNTER_DECL(mount_destroy_label);
748static void
749test_mount_destroy_label(struct label *label)
750{
751
752 LABEL_DESTROY(label, MAGIC_MOUNT);
753 COUNTER_INC(mount_destroy_label);
754}
755
756COUNTER_DECL(mount_init_label);
757static void
758test_mount_init_label(struct label *label)
759{
760
761 LABEL_INIT(label, MAGIC_MOUNT);
762 COUNTER_INC(mount_init_label);
763}
764
765COUNTER_DECL(netatalk_aarp_send);
766static void
767test_netatalk_aarp_send(struct ifnet *ifp, struct label *ifplabel,
768 struct mbuf *mbuf, struct label *mbuflabel)
769{
770
771 LABEL_CHECK(ifplabel, MAGIC_IFNET);
772 LABEL_CHECK(mbuflabel, MAGIC_MBUF);

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

779 struct mbuf *mbuf, struct label *mbuflabel)
780{
781
782 LABEL_CHECK(ifplabel, MAGIC_IFNET);
783 LABEL_CHECK(mbuflabel, MAGIC_MBUF);
784 COUNTER_INC(netinet_arp_send);
785}
786
787COUNTER_DECL(netinet_fragment);
788static void
789test_netinet_fragment(struct mbuf *datagram, struct label *datagramlabel,
790 struct mbuf *fragment, struct label *fragmentlabel)
791{
792
793 LABEL_CHECK(datagramlabel, MAGIC_MBUF);
794 LABEL_CHECK(fragmentlabel, MAGIC_MBUF);
795 COUNTER_INC(netinet_fragment);
796}
797
798COUNTER_DECL(netinet_icmp_reply);
799static void
800test_netinet_icmp_reply(struct mbuf *mrecv, struct label *mrecvlabel,
801 struct mbuf *msend, struct label *msendlabel)
802{
803
804 LABEL_CHECK(mrecvlabel, MAGIC_MBUF);
805 LABEL_CHECK(msendlabel, MAGIC_MBUF);

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

841 struct mbuf *mbuf, struct label *mbuflabel)
842{
843
844 LABEL_CHECK(ifplabel, MAGIC_IFNET);
845 LABEL_CHECK(mbuflabel, MAGIC_MBUF);
846 COUNTER_INC(netinet6_nd6_send);
847}
848
849COUNTER_DECL(pipe_check_ioctl);
850static int
851test_pipe_check_ioctl(struct ucred *cred, struct pipepair *pp,
852 struct label *pipelabel, unsigned long cmd, void /* caddr_t */ *data)
853{
854
855 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
856 LABEL_CHECK(pipelabel, MAGIC_PIPE);
857 COUNTER_INC(pipe_check_ioctl);
858
859 return (0);
860}
861
862COUNTER_DECL(pipe_check_poll);
863static int
864test_pipe_check_poll(struct ucred *cred, struct pipepair *pp,
865 struct label *pipelabel)
866{
867
868 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
869 LABEL_CHECK(pipelabel, MAGIC_PIPE);
870 COUNTER_INC(pipe_check_poll);
871
872 return (0);
873}
874
875COUNTER_DECL(pipe_check_read);
876static int
877test_pipe_check_read(struct ucred *cred, struct pipepair *pp,
878 struct label *pipelabel)
879{
880
881 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
882 LABEL_CHECK(pipelabel, MAGIC_PIPE);
883 COUNTER_INC(pipe_check_read);
884
885 return (0);
886}
887
888COUNTER_DECL(pipe_check_relabel);
889static int
890test_pipe_check_relabel(struct ucred *cred, struct pipepair *pp,
891 struct label *pipelabel, struct label *newlabel)
892{
893
894 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
895 LABEL_CHECK(pipelabel, MAGIC_PIPE);
896 LABEL_CHECK(newlabel, MAGIC_PIPE);
897 COUNTER_INC(pipe_check_relabel);
898
899 return (0);
900}
901
902COUNTER_DECL(pipe_check_stat);
903static int
904test_pipe_check_stat(struct ucred *cred, struct pipepair *pp,
905 struct label *pipelabel)
906{
907
908 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
909 LABEL_CHECK(pipelabel, MAGIC_PIPE);
910 COUNTER_INC(pipe_check_stat);
911
912 return (0);
913}
914
915COUNTER_DECL(pipe_check_write);
916static int
917test_pipe_check_write(struct ucred *cred, struct pipepair *pp,
918 struct label *pipelabel)
919{
920
921 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
922 LABEL_CHECK(pipelabel, MAGIC_PIPE);
923 COUNTER_INC(pipe_check_write);
924
925 return (0);
926}
927
928COUNTER_DECL(pipe_copy_label);
929static void
930test_pipe_copy_label(struct label *src, struct label *dest)
931{
932
933 LABEL_CHECK(src, MAGIC_PIPE);
934 LABEL_CHECK(dest, MAGIC_PIPE);
935 COUNTER_INC(pipe_copy_label);
936}
937
938COUNTER_DECL(pipe_create);
939static void
940test_pipe_create(struct ucred *cred, struct pipepair *pp,
941 struct label *pipelabel)
942{
943
944 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
945 LABEL_CHECK(pipelabel, MAGIC_PIPE);
946 COUNTER_INC(pipe_create);
947}
948
949COUNTER_DECL(pipe_destroy_label);
950static void
951test_pipe_destroy_label(struct label *label)
952{
953
954 LABEL_DESTROY(label, MAGIC_PIPE);
955 COUNTER_INC(pipe_destroy_label);
956}
957
958COUNTER_DECL(pipe_externalize_label);
959static int
960test_pipe_externalize_label(struct label *label, char *element_name,
961 struct sbuf *sb, int *claimed)
962{
963
964 LABEL_CHECK(label, MAGIC_PIPE);
965 COUNTER_INC(pipe_externalize_label);
966
967 return (0);
968}
969
970COUNTER_DECL(pipe_init_label);
971static void
972test_pipe_init_label(struct label *label)
973{
974
975 LABEL_INIT(label, MAGIC_PIPE);
976 COUNTER_INC(pipe_init_label);
977}
978
979COUNTER_DECL(pipe_relabel);
980static void
981test_pipe_relabel(struct ucred *cred, struct pipepair *pp,
982 struct label *pipelabel, struct label *newlabel)
983{
984
985 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
986 LABEL_CHECK(pipelabel, MAGIC_PIPE);
987 LABEL_CHECK(newlabel, MAGIC_PIPE);
988 COUNTER_INC(pipe_relabel);
989}
990
991COUNTER_DECL(posixsem_check_destroy);
992static int
993test_posixsem_check_destroy(struct ucred *cred, struct ksem *ks,
994 struct label *kslabel)
995{
996
997 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
998 LABEL_CHECK(kslabel, MAGIC_POSIX_SEM);
999 COUNTER_INC(posixsem_check_destroy);
1000
1001 return (0);
1002}
1003
1004COUNTER_DECL(posixsem_check_getvalue);
1005static int
1006test_posixsem_check_getvalue(struct ucred *cred, struct ksem *ks,
1007 struct label *kslabel)
1008{
1009
1010 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1011 LABEL_CHECK(kslabel, MAGIC_POSIX_SEM);
1012 COUNTER_INC(posixsem_check_getvalue);
1013
1014 return (0);
1015}
1016
1017COUNTER_DECL(posixsem_check_open);
1018static int
1019test_posixsem_check_open(struct ucred *cred, struct ksem *ks,
1020 struct label *kslabel)
1021{
1022
1023 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1024 LABEL_CHECK(kslabel, MAGIC_POSIX_SEM);
1025 COUNTER_INC(posixsem_check_open);
1026
1027 return (0);
1028}
1029
1030COUNTER_DECL(posixsem_check_post);
1031static int
1032test_posixsem_check_post(struct ucred *cred, struct ksem *ks,
1033 struct label *kslabel)
1034{
1035
1036 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1037 LABEL_CHECK(kslabel, MAGIC_POSIX_SEM);
1038 COUNTER_INC(posixsem_check_post);
1039
1040 return (0);
1041}
1042
1043COUNTER_DECL(posixsem_check_unlink);
1044static int
1045test_posixsem_check_unlink(struct ucred *cred, struct ksem *ks,
1046 struct label *kslabel)
1047{
1048
1049 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1050 LABEL_CHECK(kslabel, MAGIC_POSIX_SEM);
1051 COUNTER_INC(posixsem_check_unlink);
1052
1053 return (0);
1054}
1055
1056COUNTER_DECL(posixsem_check_wait);
1057static int
1058test_posixsem_check_wait(struct ucred *cred, struct ksem *ks,
1059 struct label *kslabel)
1060{
1061
1062 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1063 LABEL_CHECK(kslabel, MAGIC_POSIX_SEM);
1064 COUNTER_INC(posixsem_check_wait);
1065
1066 return (0);
1067}
1068
1069COUNTER_DECL(posixsem_create);
1070static void
1071test_posixsem_create(struct ucred *cred, struct ksem *ks,
1072 struct label *kslabel)
1073{
1074
1075 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1076 LABEL_CHECK(kslabel, MAGIC_POSIX_SEM);
1077 COUNTER_INC(posixsem_create);
1078}
1079
1080COUNTER_DECL(posixsem_destroy_label);
1081static void
1082test_posixsem_destroy_label(struct label *label)
1083{
1084
1085 LABEL_DESTROY(label, MAGIC_POSIX_SEM);
1086 COUNTER_INC(posixsem_destroy_label);
1087}
1088
1089COUNTER_DECL(posixsem_init_label);
1090static void
1091test_posixsem_init_label(struct label *label)
1092{
1093
1094 LABEL_INIT(label, MAGIC_POSIX_SEM);
1095 COUNTER_INC(posixsem_init_label);
1096}
1097
1098COUNTER_DECL(proc_check_debug);
1099static int
1100test_proc_check_debug(struct ucred *cred, struct proc *p)
1101{
1102
1103 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1104 LABEL_CHECK(p->p_ucred->cr_label, MAGIC_CRED);
1105 COUNTER_INC(proc_check_debug);
1106
1107 return (0);
1108}
1109
1110COUNTER_DECL(proc_check_sched);
1111static int
1112test_proc_check_sched(struct ucred *cred, struct proc *p)
1113{
1114
1115 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1116 LABEL_CHECK(p->p_ucred->cr_label, MAGIC_CRED);
1117 COUNTER_INC(proc_check_sched);
1118
1119 return (0);
1120}
1121
1122COUNTER_DECL(proc_check_signal);
1123static int
1124test_proc_check_signal(struct ucred *cred, struct proc *p, int signum)
1125{
1126
1127 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1128 LABEL_CHECK(p->p_ucred->cr_label, MAGIC_CRED);
1129 COUNTER_INC(proc_check_signal);
1130
1131 return (0);
1132}
1133
1134COUNTER_DECL(proc_check_setaudit);
1135static int
1136test_proc_check_setaudit(struct ucred *cred, struct auditinfo *ai)
1137{
1138
1139 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1140 COUNTER_INC(proc_check_setaudit);
1141
1142 return (0);
1143}
1144
1145COUNTER_DECL(proc_check_setaudit_addr);
1146static int
1147test_proc_check_setaudit_addr(struct ucred *cred,
1148 struct auditinfo_addr *aia)
1149{
1150
1151 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1152 COUNTER_INC(proc_check_setaudit_addr);
1153
1154 return (0);
1155}
1156
1157COUNTER_DECL(proc_check_setauid);
1158static int
1159test_proc_check_setauid(struct ucred *cred, uid_t auid)
1160{
1161
1162 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1163 COUNTER_INC(proc_check_setauid);
1164
1165 return (0);
1166}
1167
1168COUNTER_DECL(proc_check_setegid);
1169static int
1170test_proc_check_setegid(struct ucred *cred, gid_t egid)
1171{
1172
1173 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1174 COUNTER_INC(proc_check_setegid);
1175
1176 return (0);
1177}
1178
1179COUNTER_DECL(proc_check_euid);
1180static int
1181test_proc_check_seteuid(struct ucred *cred, uid_t euid)
1182{
1183
1184 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1185 COUNTER_INC(proc_check_euid);
1186
1187 return (0);
1188}
1189
1190COUNTER_DECL(proc_check_setregid);
1191static int
1192test_proc_check_setregid(struct ucred *cred, gid_t rgid, gid_t egid)
1193{
1194
1195 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1196 COUNTER_INC(proc_check_setregid);
1197
1198 return (0);
1199}
1200
1201COUNTER_DECL(proc_check_setreuid);
1202static int
1203test_proc_check_setreuid(struct ucred *cred, uid_t ruid, uid_t euid)
1204{
1205
1206 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1207 COUNTER_INC(proc_check_setreuid);
1208
1209 return (0);
1210}
1211
1212COUNTER_DECL(proc_check_setgid);
1213static int
1214test_proc_check_setgid(struct ucred *cred, gid_t gid)
1215{
1216
1217 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1218 COUNTER_INC(proc_check_setgid);
1219
1220 return (0);
1221}
1222
1223COUNTER_DECL(proc_check_setgroups);
1224static int
1225test_proc_check_setgroups(struct ucred *cred, int ngroups,
1226 gid_t *gidset)
1227{
1228
1229 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1230 COUNTER_INC(proc_check_setgroups);
1231
1232 return (0);
1233}
1234
1235COUNTER_DECL(proc_check_setresgid);
1236static int
1237test_proc_check_setresgid(struct ucred *cred, gid_t rgid, gid_t egid,
1238 gid_t sgid)
1239{
1240
1241 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1242 COUNTER_INC(proc_check_setresgid);
1243
1244 return (0);
1245}
1246
1247COUNTER_DECL(proc_check_setresuid);
1248static int
1249test_proc_check_setresuid(struct ucred *cred, uid_t ruid, uid_t euid,
1250 uid_t suid)
1251{
1252
1253 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1254 COUNTER_INC(proc_check_setresuid);
1255
1256 return (0);
1257}
1258
1259COUNTER_DECL(proc_check_setuid);
1260static int
1261test_proc_check_setuid(struct ucred *cred, uid_t uid)
1262{
1263
1264 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1265 COUNTER_INC(proc_check_setuid);
1266
1267 return (0);
1268}
1269
1270COUNTER_DECL(proc_check_wait);
1271static int
1272test_proc_check_wait(struct ucred *cred, struct proc *p)
1273{
1274
1275 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1276 LABEL_CHECK(p->p_ucred->cr_label, MAGIC_CRED);
1277 COUNTER_INC(proc_check_wait);
1278
1279 return (0);
1280}
1281
1282COUNTER_DECL(proc_create_init);
1283static void
1284test_proc_create_init(struct ucred *cred)
1285{
1286
1287 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1288 COUNTER_INC(proc_create_init);
1289}
1290
1291COUNTER_DECL(proc_create_swapper);
1292static void
1293test_proc_create_swapper(struct ucred *cred)
1294{
1295
1296 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1297 COUNTER_INC(proc_create_swapper);
1298}
1299
1300COUNTER_DECL(proc_destroy_label);
1301static void
1302test_proc_destroy_label(struct label *label)
1303{
1304
1305 LABEL_DESTROY(label, MAGIC_PROC);
1306 COUNTER_INC(proc_destroy_label);
1307}
1308
1309COUNTER_DECL(proc_init_label);
1310static void
1311test_proc_init_label(struct label *label)
1312{
1313
1314 LABEL_INIT(label, MAGIC_PROC);
1315 COUNTER_INC(proc_init_label);
1316}
1317
1318COUNTER_DECL(socket_check_accept);
1319static int
1320test_socket_check_accept(struct ucred *cred, struct socket *so,
1321 struct label *solabel)
1322{
1323
1324 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1325 LABEL_CHECK(solabel, MAGIC_SOCKET);
1326 COUNTER_INC(socket_check_accept);
1327
1328 return (0);
1329}
1330
1331COUNTER_DECL(socket_check_bind);
1332static int
1333test_socket_check_bind(struct ucred *cred, struct socket *so,
1334 struct label *solabel, struct sockaddr *sa)
1335{
1336
1337 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1338 LABEL_CHECK(solabel, MAGIC_SOCKET);
1339 COUNTER_INC(socket_check_bind);
1340
1341 return (0);
1342}
1343
1344COUNTER_DECL(socket_check_connect);
1345static int
1346test_socket_check_connect(struct ucred *cred, struct socket *so,
1347 struct label *solabel, struct sockaddr *sa)
1348{
1349
1350 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1351 LABEL_CHECK(solabel, MAGIC_SOCKET);
1352 COUNTER_INC(socket_check_connect);
1353
1354 return (0);
1355}
1356
1357COUNTER_DECL(socket_check_deliver);
1358static int
1359test_socket_check_deliver(struct socket *so, struct label *solabel,
1360 struct mbuf *m, struct label *mlabel)
1361{
1362
1363 LABEL_CHECK(solabel, MAGIC_SOCKET);
1364 LABEL_CHECK(mlabel, MAGIC_MBUF);
1365 COUNTER_INC(socket_check_deliver);
1366
1367 return (0);
1368}
1369
1370COUNTER_DECL(socket_check_listen);
1371static int
1372test_socket_check_listen(struct ucred *cred, struct socket *so,
1373 struct label *solabel)
1374{
1375
1376 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1377 LABEL_CHECK(solabel, MAGIC_SOCKET);
1378 COUNTER_INC(socket_check_listen);
1379
1380 return (0);
1381}
1382
1383COUNTER_DECL(socket_check_poll);
1384static int
1385test_socket_check_poll(struct ucred *cred, struct socket *so,
1386 struct label *solabel)
1387{
1388
1389 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1390 LABEL_CHECK(solabel, MAGIC_SOCKET);
1391 COUNTER_INC(socket_check_poll);
1392
1393 return (0);
1394}
1395
1396COUNTER_DECL(socket_check_receive);
1397static int
1398test_socket_check_receive(struct ucred *cred, struct socket *so,
1399 struct label *solabel)
1400{
1401
1402 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1403 LABEL_CHECK(solabel, MAGIC_SOCKET);
1404 COUNTER_INC(socket_check_receive);
1405
1406 return (0);
1407}
1408
1409COUNTER_DECL(socket_check_relabel);
1410static int
1411test_socket_check_relabel(struct ucred *cred, struct socket *so,
1412 struct label *solabel, struct label *newlabel)
1413{
1414
1415 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1416 LABEL_CHECK(solabel, MAGIC_SOCKET);
1417 LABEL_CHECK(newlabel, MAGIC_SOCKET);
1418 COUNTER_INC(socket_check_relabel);
1419
1420 return (0);
1421}
1422
1423COUNTER_DECL(socket_check_send);
1424static int
1425test_socket_check_send(struct ucred *cred, struct socket *so,
1426 struct label *solabel)
1427{
1428
1429 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1430 LABEL_CHECK(solabel, MAGIC_SOCKET);
1431 COUNTER_INC(socket_check_send);
1432
1433 return (0);
1434}
1435
1436COUNTER_DECL(socket_check_stat);
1437static int
1438test_socket_check_stat(struct ucred *cred, struct socket *so,
1439 struct label *solabel)
1440{
1441
1442 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1443 LABEL_CHECK(solabel, MAGIC_SOCKET);
1444 COUNTER_INC(socket_check_stat);
1445
1446 return (0);
1447}
1448
1449COUNTER_DECL(socket_check_visible);
1450static int
1451test_socket_check_visible(struct ucred *cred, struct socket *so,
1452 struct label *solabel)
1453{
1454
1455 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1456 LABEL_CHECK(solabel, MAGIC_SOCKET);
1457 COUNTER_INC(socket_check_visible);
1458
1459 return (0);
1460}
1461
1462COUNTER_DECL(socket_copy_label);
1463static void
1464test_socket_copy_label(struct label *src, struct label *dest)
1465{
1466
1467 LABEL_CHECK(src, MAGIC_SOCKET);
1468 LABEL_CHECK(dest, MAGIC_SOCKET);
1469 COUNTER_INC(socket_copy_label);
1470}
1471
1472COUNTER_DECL(socket_create);
1473static void
1474test_socket_create(struct ucred *cred, struct socket *socket,
1475 struct label *socketlabel)
1476{
1477
1478 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1479 LABEL_CHECK(socketlabel, MAGIC_SOCKET);
1480 COUNTER_INC(socket_create);
1481}
1482
1483COUNTER_DECL(socket_create_mbuf);
1484static void
1485test_socket_create_mbuf(struct socket *so, struct label *socketlabel,
1486 struct mbuf *m, struct label *mbuflabel)
1487{
1488
1489 LABEL_CHECK(socketlabel, MAGIC_SOCKET);
1490 LABEL_CHECK(mbuflabel, MAGIC_MBUF);
1491 COUNTER_INC(socket_create_mbuf);
1492}
1493
1494COUNTER_DECL(socket_destroy_label);
1495static void
1496test_socket_destroy_label(struct label *label)
1497{
1498
1499 LABEL_DESTROY(label, MAGIC_SOCKET);
1500 COUNTER_INC(socket_destroy_label);
1501}
1502
1503COUNTER_DECL(socket_externalize_label);
1504static int
1505test_socket_externalize_label(struct label *label, char *element_name,
1506 struct sbuf *sb, int *claimed)
1507{
1508
1509 LABEL_CHECK(label, MAGIC_SOCKET);
1510 COUNTER_INC(socket_externalize_label);
1511
1512 return (0);
1513}
1514
1515COUNTER_DECL(socket_init_label);
1516static int
1517test_socket_init_label(struct label *label, int flag)
1518{
1519
1520 if (flag & M_WAITOK)
1521 WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL,
1522 "test_socket_init_label() at %s:%d", __FILE__,
1523 __LINE__);
1524
1525 LABEL_INIT(label, MAGIC_SOCKET);
1526 COUNTER_INC(socket_init_label);
1527 return (0);
1528}
1529
1530COUNTER_DECL(socket_newconn);
1531static void
1532test_socket_newconn(struct socket *oldsocket,
1533 struct label *oldsocketlabel, struct socket *newsocket,
1534 struct label *newsocketlabel)
1535{
1536
1537 LABEL_CHECK(oldsocketlabel, MAGIC_SOCKET);
1538 LABEL_CHECK(newsocketlabel, MAGIC_SOCKET);
1539 COUNTER_INC(socket_newconn);
1540}
1541
1542COUNTER_DECL(socket_relabel);
1543static void
1544test_socket_relabel(struct ucred *cred, struct socket *socket,
1545 struct label *socketlabel, struct label *newlabel)
1546{
1547
1548 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1549 LABEL_CHECK(newlabel, MAGIC_SOCKET);
1550 COUNTER_INC(socket_relabel);
1551}
1552
1553COUNTER_DECL(socketpeer_destroy_label);
1554static void
1555test_socketpeer_destroy_label(struct label *label)
1556{
1557
1558 LABEL_DESTROY(label, MAGIC_SOCKET);
1559 COUNTER_INC(socketpeer_destroy_label);
1560}
1561
1562COUNTER_DECL(socketpeer_externalize_label);
1563static int
1564test_socketpeer_externalize_label(struct label *label, char *element_name,
1565 struct sbuf *sb, int *claimed)
1566{
1567
1568 LABEL_CHECK(label, MAGIC_SOCKET);
1569 COUNTER_INC(socketpeer_externalize_label);
1570
1571 return (0);
1572}
1573
1574COUNTER_DECL(socketpeer_init_label);
1575static int
1576test_socketpeer_init_label(struct label *label, int flag)
1577{
1578
1579 if (flag & M_WAITOK)
1580 WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL,
1581 "test_socketpeer_init_label() at %s:%d", __FILE__,
1582 __LINE__);
1583
1584 LABEL_INIT(label, MAGIC_SOCKET);
1585 COUNTER_INC(socketpeer_init_label);
1586 return (0);
1587}
1588
1589COUNTER_DECL(socketpeer_set_from_mbuf);
1590static void
1591test_socketpeer_set_from_mbuf(struct mbuf *mbuf, struct label *mbuflabel,
1592 struct socket *socket, struct label *socketpeerlabel)
1593{
1594
1595 LABEL_CHECK(mbuflabel, MAGIC_MBUF);
1596 LABEL_CHECK(socketpeerlabel, MAGIC_SOCKET);
1597 COUNTER_INC(socketpeer_set_from_mbuf);
1598}
1599
1600COUNTER_DECL(socketpeer_set_from_socket);
1601static void
1602test_socketpeer_set_from_socket(struct socket *oldsocket,
1603 struct label *oldsocketlabel, struct socket *newsocket,
1604 struct label *newsocketpeerlabel)
1605{
1606
1607 LABEL_CHECK(oldsocketlabel, MAGIC_SOCKET);
1608 LABEL_CHECK(newsocketpeerlabel, MAGIC_SOCKET);
1609 COUNTER_INC(socketpeer_set_from_socket);
1610}
1611
1612COUNTER_DECL(syncache_create);
1613static void
1614test_syncache_create(struct label *label, struct inpcb *inp)
1615{
1616
1617 LABEL_CHECK(label, MAGIC_SYNCACHE);
1618 COUNTER_INC(syncache_create);
1619}
1620
1621COUNTER_DECL(syncache_create_mbuf);
1622static void
1623test_syncache_create_mbuf(struct label *sc_label, struct mbuf *m,
1624 struct label *mlabel)
1625{
1626
1627 LABEL_CHECK(sc_label, MAGIC_SYNCACHE);
1628 LABEL_CHECK(mlabel, MAGIC_MBUF);
1629 COUNTER_INC(syncache_create_mbuf);
1630}
1631
1632COUNTER_DECL(syncache_destroy_label);
1633static void
1634test_syncache_destroy_label(struct label *label)
1635{
1636
1637 LABEL_DESTROY(label, MAGIC_SYNCACHE);
1638 COUNTER_INC(syncache_destroy_label);
1639}
1640
1641COUNTER_DECL(syncache_init_label);
1642static int
1643test_syncache_init_label(struct label *label, int flag)
1644{
1645
1646 if (flag & M_WAITOK)
1647 WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL,
1648 "test_syncache_init_label() at %s:%d", __FILE__,
1649 __LINE__);
1650 LABEL_INIT(label, MAGIC_SYNCACHE);
1651 COUNTER_INC(syncache_init_label);
1652 return (0);
1653}
1654
1655COUNTER_DECL(system_check_acct);
1656static int
1657test_system_check_acct(struct ucred *cred, struct vnode *vp,
1658 struct label *vplabel)
1659{
1660
1661 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1662 LABEL_CHECK(vplabel, MAGIC_VNODE);
1663 COUNTER_INC(system_check_acct);
1664
1665 return (0);
1666}
1667
1668COUNTER_DECL(system_check_audit);
1669static int
1670test_system_check_audit(struct ucred *cred, void *record, int length)
1671{
1672
1673 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1674 COUNTER_INC(system_check_audit);
1675
1676 return (0);
1677}
1678
1679COUNTER_DECL(system_check_auditctl);
1680static int
1681test_system_check_auditctl(struct ucred *cred, struct vnode *vp,
1682 struct label *vplabel)
1683{
1684
1685 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1686 LABEL_CHECK(vplabel, MAGIC_VNODE);
1687 COUNTER_INC(system_check_auditctl);
1688
1689 return (0);
1690}
1691
1692COUNTER_DECL(system_check_auditon);
1693static int
1694test_system_check_auditon(struct ucred *cred, int cmd)
1695{
1696
1697 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1698 COUNTER_INC(system_check_auditon);
1699
1700 return (0);
1701}
1702
1703COUNTER_DECL(system_check_reboot);
1704static int
1705test_system_check_reboot(struct ucred *cred, int how)
1706{
1707
1708 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1709 COUNTER_INC(system_check_reboot);
1710
1711 return (0);
1712}
1713
1714COUNTER_DECL(system_check_swapoff);
1715static int
1716test_system_check_swapoff(struct ucred *cred, struct vnode *vp,
1717 struct label *vplabel)
1718{
1719
1720 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1721 LABEL_CHECK(vplabel, MAGIC_VNODE);
1722 COUNTER_INC(system_check_swapoff);
1723
1724 return (0);
1725}
1726
1727COUNTER_DECL(system_check_swapon);
1728static int
1729test_system_check_swapon(struct ucred *cred, struct vnode *vp,
1730 struct label *vplabel)
1731{
1732
1733 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1734 LABEL_CHECK(vplabel, MAGIC_VNODE);
1735 COUNTER_INC(system_check_swapon);
1736
1737 return (0);
1738}
1739
1740COUNTER_DECL(system_check_sysctl);
1741static int
1742test_system_check_sysctl(struct ucred *cred, struct sysctl_oid *oidp,
1743 void *arg1, int arg2, struct sysctl_req *req)
1744{
1745
1746 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1747 COUNTER_INC(system_check_sysctl);
1748
1749 return (0);
1750}
1751
1752COUNTER_DECL(sysvmsg_cleanup);
1753static void
1754test_sysvmsg_cleanup(struct label *msglabel)
1755{
1756
1757 LABEL_CHECK(msglabel, MAGIC_SYSV_MSG);
1758 COUNTER_INC(sysvmsg_cleanup);
1759}
1760
1761COUNTER_DECL(sysvmsg_create);
1762static void
1763test_sysvmsg_create(struct ucred *cred, struct msqid_kernel *msqkptr,
1764 struct label *msqlabel, struct msg *msgptr, struct label *msglabel)
1765{
1766
1767 LABEL_CHECK(msglabel, MAGIC_SYSV_MSG);
1768 LABEL_CHECK(msqlabel, MAGIC_SYSV_MSQ);
1769 COUNTER_INC(sysvmsg_create);
1770}
1771
1772COUNTER_DECL(sysvmsg_destroy_label);
1773static void
1774test_sysvmsg_destroy_label(struct label *label)
1775{
1776
1777 LABEL_DESTROY(label, MAGIC_SYSV_MSG);
1778 COUNTER_INC(sysvmsg_destroy_label);
1779}
1780
1781COUNTER_DECL(sysvmsg_init_label);
1782static void
1783test_sysvmsg_init_label(struct label *label)
1784{
1785 LABEL_INIT(label, MAGIC_SYSV_MSG);
1786 COUNTER_INC(sysvmsg_init_label);
1787}
1788
1789COUNTER_DECL(sysvmsq_check_msgmsq);
1790static int
1791test_sysvmsq_check_msgmsq(struct ucred *cred, struct msg *msgptr,
1792 struct label *msglabel, struct msqid_kernel *msqkptr,
1793 struct label *msqklabel)
1794{
1795
1796 LABEL_CHECK(msqklabel, MAGIC_SYSV_MSQ);
1797 LABEL_CHECK(msglabel, MAGIC_SYSV_MSG);
1798 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1799 COUNTER_INC(sysvmsq_check_msgmsq);
1800
1801 return (0);
1802}
1803
1804COUNTER_DECL(sysvmsq_check_msgrcv);
1805static int
1806test_sysvmsq_check_msgrcv(struct ucred *cred, struct msg *msgptr,
1807 struct label *msglabel)
1808{
1809
1810 LABEL_CHECK(msglabel, MAGIC_SYSV_MSG);
1811 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1812 COUNTER_INC(sysvmsq_check_msgrcv);
1813
1814 return (0);
1815}
1816
1817COUNTER_DECL(sysvmsq_check_msgrmid);
1818static int
1819test_sysvmsq_check_msgrmid(struct ucred *cred, struct msg *msgptr,
1820 struct label *msglabel)
1821{
1822
1823 LABEL_CHECK(msglabel, MAGIC_SYSV_MSG);
1824 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1825 COUNTER_INC(sysvmsq_check_msgrmid);
1826
1827 return (0);
1828}
1829
1830COUNTER_DECL(sysvmsq_check_msqget);
1831static int
1832test_sysvmsq_check_msqget(struct ucred *cred,
1833 struct msqid_kernel *msqkptr, struct label *msqklabel)
1834{
1835
1836 LABEL_CHECK(msqklabel, MAGIC_SYSV_MSQ);
1837 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1838 COUNTER_INC(sysvmsq_check_msqget);
1839
1840 return (0);
1841}
1842
1843COUNTER_DECL(sysvmsq_check_msqsnd);
1844static int
1845test_sysvmsq_check_msqsnd(struct ucred *cred,
1846 struct msqid_kernel *msqkptr, struct label *msqklabel)
1847{
1848
1849 LABEL_CHECK(msqklabel, MAGIC_SYSV_MSQ);
1850 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1851 COUNTER_INC(sysvmsq_check_msqsnd);
1852
1853 return (0);
1854}
1855
1856COUNTER_DECL(sysvmsq_check_msqrcv);
1857static int
1858test_sysvmsq_check_msqrcv(struct ucred *cred,
1859 struct msqid_kernel *msqkptr, struct label *msqklabel)
1860{
1861
1862 LABEL_CHECK(msqklabel, MAGIC_SYSV_MSQ);
1863 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1864 COUNTER_INC(sysvmsq_check_msqrcv);
1865
1866 return (0);
1867}
1868
1869COUNTER_DECL(sysvmsq_check_msqctl);
1870static int
1871test_sysvmsq_check_msqctl(struct ucred *cred,
1872 struct msqid_kernel *msqkptr, struct label *msqklabel, int cmd)
1873{
1874
1875 LABEL_CHECK(msqklabel, MAGIC_SYSV_MSQ);
1876 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1877 COUNTER_INC(sysvmsq_check_msqctl);
1878
1879 return (0);
1880}
1881
1882COUNTER_DECL(sysvmsq_cleanup);
1883static void
1884test_sysvmsq_cleanup(struct label *msqlabel)
1885{
1886
1887 LABEL_CHECK(msqlabel, MAGIC_SYSV_MSQ);
1888 COUNTER_INC(sysvmsq_cleanup);
1889}
1890
1891COUNTER_DECL(sysvmsq_create);
1892static void
1893test_sysvmsq_create(struct ucred *cred,
1894 struct msqid_kernel *msqkptr, struct label *msqlabel)
1895{
1896
1897 LABEL_CHECK(msqlabel, MAGIC_SYSV_MSQ);
1898 COUNTER_INC(sysvmsq_create);
1899}
1900
1901COUNTER_DECL(sysvmsq_destroy_label);
1902static void
1903test_sysvmsq_destroy_label(struct label *label)
1904{
1905
1906 LABEL_DESTROY(label, MAGIC_SYSV_MSQ);
1907 COUNTER_INC(sysvmsq_destroy_label);
1908}
1909
1910COUNTER_DECL(sysvmsq_init_label);
1911static void
1912test_sysvmsq_init_label(struct label *label)
1913{
1914 LABEL_INIT(label, MAGIC_SYSV_MSQ);
1915 COUNTER_INC(sysvmsq_init_label);
1916}
1917
1918COUNTER_DECL(sysvsem_check_semctl);
1919static int
1920test_sysvsem_check_semctl(struct ucred *cred,
1921 struct semid_kernel *semakptr, struct label *semaklabel, int cmd)
1922{
1923
1924 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1925 LABEL_CHECK(semaklabel, MAGIC_SYSV_SEM);
1926 COUNTER_INC(sysvsem_check_semctl);
1927
1928 return (0);
1929}
1930
1931COUNTER_DECL(sysvsem_check_semget);
1932static int
1933test_sysvsem_check_semget(struct ucred *cred,
1934 struct semid_kernel *semakptr, struct label *semaklabel)
1935{
1936
1937 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1938 LABEL_CHECK(semaklabel, MAGIC_SYSV_SEM);
1939 COUNTER_INC(sysvsem_check_semget);
1940
1941 return (0);
1942}
1943
1944COUNTER_DECL(sysvsem_check_semop);
1945static int
1946test_sysvsem_check_semop(struct ucred *cred,
1947 struct semid_kernel *semakptr, struct label *semaklabel, size_t accesstype)
1948{
1949
1950 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
1951 LABEL_CHECK(semaklabel, MAGIC_SYSV_SEM);
1952 COUNTER_INC(sysvsem_check_semop);
1953
1954 return (0);
1955}
1956
1957COUNTER_DECL(sysvsem_cleanup);
1958static void
1959test_sysvsem_cleanup(struct label *semalabel)
1960{
1961
1962 LABEL_CHECK(semalabel, MAGIC_SYSV_SEM);
1963 COUNTER_INC(sysvsem_cleanup);
1964}
1965
1966COUNTER_DECL(sysvsem_create);
1967static void
1968test_sysvsem_create(struct ucred *cred, struct semid_kernel *semakptr,
1969 struct label *semalabel)
1970{
1971
1972 LABEL_CHECK(semalabel, MAGIC_SYSV_SEM);
1973 COUNTER_INC(sysvsem_create);
1974}
1975
1976COUNTER_DECL(sysvsem_destroy_label);
1977static void
1978test_sysvsem_destroy_label(struct label *label)
1979{
1980
1981 LABEL_DESTROY(label, MAGIC_SYSV_SEM);
1982 COUNTER_INC(sysvsem_destroy_label);
1983}
1984
1985COUNTER_DECL(sysvsem_init_label);
1986static void
1987test_sysvsem_init_label(struct label *label)
1988{
1989 LABEL_INIT(label, MAGIC_SYSV_SEM);
1990 COUNTER_INC(sysvsem_init_label);
1991}
1992
1993COUNTER_DECL(sysvshm_check_shmat);
1994static int
1995test_sysvshm_check_shmat(struct ucred *cred,
1996 struct shmid_kernel *shmsegptr, struct label *shmseglabel, int shmflg)
1997{
1998
1999 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
2000 LABEL_CHECK(shmseglabel, MAGIC_SYSV_SHM);
2001 COUNTER_INC(sysvshm_check_shmat);
2002
2003 return (0);
2004}
2005
2006COUNTER_DECL(sysvshm_check_shmctl);
2007static int
2008test_sysvshm_check_shmctl(struct ucred *cred,
2009 struct shmid_kernel *shmsegptr, struct label *shmseglabel, int cmd)
2010{
2011
2012 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
2013 LABEL_CHECK(shmseglabel, MAGIC_SYSV_SHM);
2014 COUNTER_INC(sysvshm_check_shmctl);
2015
2016 return (0);
2017}
2018
2019COUNTER_DECL(sysvshm_check_shmdt);
2020static int
2021test_sysvshm_check_shmdt(struct ucred *cred,
2022 struct shmid_kernel *shmsegptr, struct label *shmseglabel)
2023{
2024
2025 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
2026 LABEL_CHECK(shmseglabel, MAGIC_SYSV_SHM);
2027 COUNTER_INC(sysvshm_check_shmdt);
2028
2029 return (0);
2030}
2031
2032COUNTER_DECL(sysvshm_check_shmget);
2033static int
2034test_sysvshm_check_shmget(struct ucred *cred,
2035 struct shmid_kernel *shmsegptr, struct label *shmseglabel, int shmflg)
2036{
2037
2038 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
2039 LABEL_CHECK(shmseglabel, MAGIC_SYSV_SHM);
2040 COUNTER_INC(sysvshm_check_shmget);
2041
2042 return (0);
2043}
2044
2045COUNTER_DECL(sysvshm_cleanup);
2046static void
2047test_sysvshm_cleanup(struct label *shmlabel)
2048{
2049
2050 LABEL_CHECK(shmlabel, MAGIC_SYSV_SHM);
2051 COUNTER_INC(sysvshm_cleanup);
2052}
2053
2054COUNTER_DECL(sysvshm_create);
2055static void
2056test_sysvshm_create(struct ucred *cred, struct shmid_kernel *shmsegptr,
2057 struct label *shmlabel)
2058{
2059
2060 LABEL_CHECK(shmlabel, MAGIC_SYSV_SHM);
2061 COUNTER_INC(sysvshm_create);
2062}
2063
2064COUNTER_DECL(sysvshm_destroy_label);
2065static void
2066test_sysvshm_destroy_label(struct label *label)
2067{
2068
2069 LABEL_DESTROY(label, MAGIC_SYSV_SHM);
2070 COUNTER_INC(sysvshm_destroy_label);
2071}
2072
2073COUNTER_DECL(sysvshm_init_label);
2074static void
2075test_sysvshm_init_label(struct label *label)
2076{
2077 LABEL_INIT(label, MAGIC_SYSV_SHM);
2078 COUNTER_INC(sysvshm_init_label);
2079}
2080
2081COUNTER_DECL(thread_userret);
2082static void
2083test_thread_userret(struct thread *td)
2084{
2085
2086 COUNTER_INC(thread_userret);
2087}
2088
2089COUNTER_DECL(vnode_associate_extattr);
2090static int
2091test_vnode_associate_extattr(struct mount *mp, struct label *mplabel,
2092 struct vnode *vp, struct label *vplabel)
2093{
2094
2095 LABEL_CHECK(mplabel, MAGIC_MOUNT);
2096 LABEL_CHECK(vplabel, MAGIC_VNODE);
2097 COUNTER_INC(vnode_associate_extattr);
2098
2099 return (0);
2100}
2101
2102COUNTER_DECL(vnode_associate_singlelabel);
2103static void
2104test_vnode_associate_singlelabel(struct mount *mp, struct label *mplabel,
2105 struct vnode *vp, struct label *vplabel)
2106{
2107
2108 LABEL_CHECK(mplabel, MAGIC_MOUNT);
2109 LABEL_CHECK(vplabel, MAGIC_VNODE);
2110 COUNTER_INC(vnode_associate_singlelabel);
2111}
2112
2113COUNTER_DECL(vnode_check_access);
2114static int
2115test_vnode_check_access(struct ucred *cred, struct vnode *vp,
2116 struct label *vplabel, int acc_mode)
2117{
2118
2119 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
2120 LABEL_CHECK(vplabel, MAGIC_VNODE);

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

2529 if (file_cred != NULL)
2530 LABEL_CHECK(file_cred->cr_label, MAGIC_CRED);
2531 LABEL_CHECK(vplabel, MAGIC_VNODE);
2532 COUNTER_INC(vnode_check_write);
2533
2534 return (0);
2535}
2536
2537COUNTER_DECL(vnode_copy_label);
2538static void
2539test_vnode_copy_label(struct label *src, struct label *dest)
2540{
2541
2542 LABEL_CHECK(src, MAGIC_VNODE);
2543 LABEL_CHECK(dest, MAGIC_VNODE);
2544 COUNTER_INC(vnode_copy_label);
2545}
2546
2547COUNTER_DECL(vnode_create_extattr);
2548static int
2549test_vnode_create_extattr(struct ucred *cred, struct mount *mp,
2550 struct label *mplabel, struct vnode *dvp, struct label *dvplabel,
2551 struct vnode *vp, struct label *vplabel, struct componentname *cnp)
2552{
2553
2554 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
2555 LABEL_CHECK(mplabel, MAGIC_MOUNT);
2556 LABEL_CHECK(dvplabel, MAGIC_VNODE);
2557 COUNTER_INC(vnode_create_extattr);
2558
2559 return (0);
2560}
2561
2562COUNTER_DECL(vnode_destroy_label);
2563static void
2564test_vnode_destroy_label(struct label *label)
2565{
2566
2567 LABEL_DESTROY(label, MAGIC_VNODE);
2568 COUNTER_INC(vnode_destroy_label);
2569}
2570
2571COUNTER_DECL(vnode_execve_transition);
2572static void
2573test_vnode_execve_transition(struct ucred *old, struct ucred *new,
2574 struct vnode *vp, struct label *filelabel,
2575 struct label *interpvplabel, struct image_params *imgp,
2576 struct label *execlabel)
2577{
2578
2579 LABEL_CHECK(old->cr_label, MAGIC_CRED);
2580 LABEL_CHECK(new->cr_label, MAGIC_CRED);
2581 LABEL_CHECK(filelabel, MAGIC_VNODE);
2582 LABEL_CHECK(interpvplabel, MAGIC_VNODE);
2583 LABEL_CHECK(execlabel, MAGIC_CRED);
2584 COUNTER_INC(vnode_execve_transition);
2585}
2586
2587COUNTER_DECL(vnode_execve_will_transition);
2588static int
2589test_vnode_execve_will_transition(struct ucred *old, struct vnode *vp,
2590 struct label *filelabel, struct label *interpvplabel,
2591 struct image_params *imgp, struct label *execlabel)
2592{
2593
2594 LABEL_CHECK(old->cr_label, MAGIC_CRED);
2595 LABEL_CHECK(filelabel, MAGIC_VNODE);
2596 LABEL_CHECK(interpvplabel, MAGIC_VNODE);
2597 LABEL_CHECK(execlabel, MAGIC_CRED);
2598 COUNTER_INC(vnode_execve_will_transition);
2599
2600 return (0);
2601}
2602
2603COUNTER_DECL(vnode_externalize_label);
2604static int
2605test_vnode_externalize_label(struct label *label, char *element_name,
2606 struct sbuf *sb, int *claimed)
2607{
2608
2609 LABEL_CHECK(label, MAGIC_VNODE);
2610 COUNTER_INC(vnode_externalize_label);
2611
2612 return (0);
2613}
2614
2615COUNTER_DECL(vnode_init_label);
2616static void
2617test_vnode_init_label(struct label *label)
2618{
2619
2620 LABEL_INIT(label, MAGIC_VNODE);
2621 COUNTER_INC(vnode_init_label);
2622}
2623
2624COUNTER_DECL(vnode_relabel);
2625static void
2626test_vnode_relabel(struct ucred *cred, struct vnode *vp,
2627 struct label *vplabel, struct label *label)
2628{
2629
2630 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
2631 LABEL_CHECK(vplabel, MAGIC_VNODE);
2632 LABEL_CHECK(label, MAGIC_VNODE);
2633 COUNTER_INC(vnode_relabel);
2634}
2635
2636COUNTER_DECL(vnode_setlabel_extattr);
2637static int
2638test_vnode_setlabel_extattr(struct ucred *cred, struct vnode *vp,
2639 struct label *vplabel, struct label *intlabel)
2640{
2641
2642 LABEL_CHECK(cred->cr_label, MAGIC_CRED);
2643 LABEL_CHECK(vplabel, MAGIC_VNODE);
2644 LABEL_CHECK(intlabel, MAGIC_VNODE);
2645 COUNTER_INC(vnode_setlabel_extattr);
2646
2647 return (0);
2648}
2649
2650static struct mac_policy_ops test_ops =
2651{
2652 .mpo_bpfdesc_check_receive = test_bpfdesc_check_receive,
2653 .mpo_bpfdesc_create = test_bpfdesc_create,
2654 .mpo_bpfdesc_create_mbuf = test_bpfdesc_create_mbuf,
2655 .mpo_bpfdesc_destroy_label = test_bpfdesc_destroy_label,
2656 .mpo_bpfdesc_init_label = test_bpfdesc_init_label,
2657
2658 .mpo_cred_check_relabel = test_cred_check_relabel,
2659 .mpo_cred_check_visible = test_cred_check_visible,
2660 .mpo_cred_copy_label = test_cred_copy_label,
2661 .mpo_cred_destroy_label = test_cred_destroy_label,
2662 .mpo_cred_externalize_label = test_cred_externalize_label,
2663 .mpo_cred_init_label = test_cred_init_label,
2664 .mpo_cred_internalize_label = test_internalize_label,
2665 .mpo_cred_relabel = test_cred_relabel,
2666
2667 .mpo_devfs_create_device = test_devfs_create_device,
2668 .mpo_devfs_create_directory = test_devfs_create_directory,
2669 .mpo_devfs_create_symlink = test_devfs_create_symlink,
2670 .mpo_devfs_destroy_label = test_devfs_destroy_label,
2671 .mpo_devfs_init_label = test_devfs_init_label,
2672 .mpo_devfs_update = test_devfs_update,
2673 .mpo_devfs_vnode_associate = test_devfs_vnode_associate,
2674
2675 .mpo_ifnet_check_relabel = test_ifnet_check_relabel,
2676 .mpo_ifnet_check_transmit = test_ifnet_check_transmit,
2677 .mpo_ifnet_copy_label = test_ifnet_copy_label,
2678 .mpo_ifnet_create = test_ifnet_create,
2679 .mpo_ifnet_create_mbuf = test_ifnet_create_mbuf,
2680 .mpo_ifnet_destroy_label = test_ifnet_destroy_label,
2681 .mpo_ifnet_externalize_label = test_ifnet_externalize_label,
2682 .mpo_ifnet_init_label = test_ifnet_init_label,
2683 .mpo_ifnet_internalize_label = test_internalize_label,
2684 .mpo_ifnet_relabel = test_ifnet_relabel,
2685
2686 .mpo_syncache_destroy_label = test_syncache_destroy_label,
2687 .mpo_syncache_init_label = test_syncache_init_label,
2688
2689 .mpo_sysvmsg_destroy_label = test_sysvmsg_destroy_label,
2690 .mpo_sysvmsg_init_label = test_sysvmsg_init_label,
2691
2692 .mpo_sysvmsq_destroy_label = test_sysvmsq_destroy_label,
2693 .mpo_sysvmsq_init_label = test_sysvmsq_init_label,
2694
2695 .mpo_sysvsem_destroy_label = test_sysvsem_destroy_label,
2696 .mpo_sysvsem_init_label = test_sysvsem_init_label,
2697
2698 .mpo_sysvshm_destroy_label = test_sysvshm_destroy_label,
2699 .mpo_sysvshm_init_label = test_sysvshm_init_label,
2700
2701 .mpo_inpcb_check_deliver = test_inpcb_check_deliver,
2702 .mpo_inpcb_create = test_inpcb_create,
2703 .mpo_inpcb_create_mbuf = test_inpcb_create_mbuf,
2704 .mpo_inpcb_destroy_label = test_inpcb_destroy_label,
2705 .mpo_inpcb_init_label = test_inpcb_init_label,
2706 .mpo_inpcb_sosetlabel = test_inpcb_sosetlabel,
2707
2708 .mpo_ipq_create = test_ipq_create,
2709 .mpo_ipq_destroy_label = test_ipq_destroy_label,
2710 .mpo_ipq_init_label = test_ipq_init_label,
2711 .mpo_ipq_match = test_ipq_match,
2712 .mpo_ipq_reassemble = test_ipq_reassemble,
2713 .mpo_ipq_update = test_ipq_update,
2714
2715 .mpo_kenv_check_dump = test_kenv_check_dump,
2716 .mpo_kenv_check_get = test_kenv_check_get,
2717 .mpo_kenv_check_set = test_kenv_check_set,
2718 .mpo_kenv_check_unset = test_kenv_check_unset,
2719
2720 .mpo_kld_check_load = test_kld_check_load,
2721 .mpo_kld_check_stat = test_kld_check_stat,
2722
2723 .mpo_mbuf_copy_label = test_mbuf_copy_label,
2724 .mpo_mbuf_destroy_label = test_mbuf_destroy_label,
2725 .mpo_mbuf_init_label = test_mbuf_init_label,
2726
2727 .mpo_mount_check_stat = test_mount_check_stat,
2728 .mpo_mount_create = test_mount_create,
2729 .mpo_mount_destroy_label = test_mount_destroy_label,
2730 .mpo_mount_init_label = test_mount_init_label,
2731
2732 .mpo_netatalk_aarp_send = test_netatalk_aarp_send,
2733
2734 .mpo_netinet_arp_send = test_netinet_arp_send,
2735 .mpo_netinet_fragment = test_netinet_fragment,
2736 .mpo_netinet_icmp_reply = test_netinet_icmp_reply,
2737 .mpo_netinet_icmp_replyinplace = test_netinet_icmp_replyinplace,
2738 .mpo_netinet_igmp_send = test_netinet_igmp_send,
2739 .mpo_netinet_tcp_reply = test_netinet_tcp_reply,
2740
2741 .mpo_netinet6_nd6_send = test_netinet6_nd6_send,
2742
2743 .mpo_pipe_check_ioctl = test_pipe_check_ioctl,
2744 .mpo_pipe_check_poll = test_pipe_check_poll,
2745 .mpo_pipe_check_read = test_pipe_check_read,
2746 .mpo_pipe_check_relabel = test_pipe_check_relabel,
2747 .mpo_pipe_check_stat = test_pipe_check_stat,
2748 .mpo_pipe_check_write = test_pipe_check_write,
2749 .mpo_pipe_copy_label = test_pipe_copy_label,
2750 .mpo_pipe_create = test_pipe_create,
2751 .mpo_pipe_destroy_label = test_pipe_destroy_label,
2752 .mpo_pipe_externalize_label = test_pipe_externalize_label,
2753 .mpo_pipe_init_label = test_pipe_init_label,
2754 .mpo_pipe_internalize_label = test_internalize_label,
2755 .mpo_pipe_relabel = test_pipe_relabel,
2756
2757 .mpo_posixsem_check_destroy = test_posixsem_check_destroy,
2758 .mpo_posixsem_check_getvalue = test_posixsem_check_getvalue,
2759 .mpo_posixsem_check_open = test_posixsem_check_open,
2760 .mpo_posixsem_check_post = test_posixsem_check_post,
2761 .mpo_posixsem_check_unlink = test_posixsem_check_unlink,
2762 .mpo_posixsem_check_wait = test_posixsem_check_wait,
2763 .mpo_posixsem_create = test_posixsem_create,
2764 .mpo_posixsem_destroy_label = test_posixsem_destroy_label,
2765 .mpo_posixsem_init_label = test_posixsem_init_label,
2766
2767 .mpo_proc_check_debug = test_proc_check_debug,
2768 .mpo_proc_check_sched = test_proc_check_sched,
2769 .mpo_proc_check_setaudit = test_proc_check_setaudit,
2770 .mpo_proc_check_setaudit_addr = test_proc_check_setaudit_addr,
2771 .mpo_proc_check_setauid = test_proc_check_setauid,
2772 .mpo_proc_check_seteuid = test_proc_check_seteuid,
2773 .mpo_proc_check_setegid = test_proc_check_setegid,
2774 .mpo_proc_check_setgid = test_proc_check_setgid,
2775 .mpo_proc_check_setgroups = test_proc_check_setgroups,
2776 .mpo_proc_check_setregid = test_proc_check_setregid,
2777 .mpo_proc_check_setresgid = test_proc_check_setresgid,
2778 .mpo_proc_check_setresuid = test_proc_check_setresuid,
2779 .mpo_proc_check_setreuid = test_proc_check_setreuid,
2780 .mpo_proc_check_setuid = test_proc_check_setuid,
2781 .mpo_proc_check_signal = test_proc_check_signal,
2782 .mpo_proc_check_wait = test_proc_check_wait,
2783 .mpo_proc_create_init = test_proc_create_init,
2784 .mpo_proc_create_swapper = test_proc_create_swapper,
2785 .mpo_proc_destroy_label = test_proc_destroy_label,
2786 .mpo_proc_init_label = test_proc_init_label,
2787
2788 .mpo_socket_check_accept = test_socket_check_accept,
2789 .mpo_socket_check_bind = test_socket_check_bind,
2790 .mpo_socket_check_connect = test_socket_check_connect,
2791 .mpo_socket_check_deliver = test_socket_check_deliver,
2792 .mpo_socket_check_listen = test_socket_check_listen,
2793 .mpo_socket_check_poll = test_socket_check_poll,
2794 .mpo_socket_check_receive = test_socket_check_receive,
2795 .mpo_socket_check_relabel = test_socket_check_relabel,
2796 .mpo_socket_check_send = test_socket_check_send,
2797 .mpo_socket_check_stat = test_socket_check_stat,
2798 .mpo_socket_check_visible = test_socket_check_visible,
2799 .mpo_socket_copy_label = test_socket_copy_label,
2800 .mpo_socket_create = test_socket_create,
2801 .mpo_socket_create_mbuf = test_socket_create_mbuf,
2802 .mpo_socket_destroy_label = test_socket_destroy_label,
2803 .mpo_socket_externalize_label = test_socket_externalize_label,
2804 .mpo_socket_init_label = test_socket_init_label,
2805 .mpo_socket_internalize_label = test_internalize_label,
2806 .mpo_socket_newconn = test_socket_newconn,
2807 .mpo_socket_relabel = test_socket_relabel,
2808
2809 .mpo_socketpeer_destroy_label = test_socketpeer_destroy_label,
2810 .mpo_socketpeer_externalize_label = test_socketpeer_externalize_label,
2811 .mpo_socketpeer_init_label = test_socketpeer_init_label,
2812 .mpo_socketpeer_set_from_mbuf = test_socketpeer_set_from_mbuf,
2813 .mpo_socketpeer_set_from_socket = test_socketpeer_set_from_socket,
2814
2815 .mpo_syncache_create = test_syncache_create,
2816 .mpo_syncache_create_mbuf = test_syncache_create_mbuf,
2817
2818 .mpo_system_check_acct = test_system_check_acct,
2819 .mpo_system_check_audit = test_system_check_audit,
2820 .mpo_system_check_auditctl = test_system_check_auditctl,
2821 .mpo_system_check_auditon = test_system_check_auditon,
2822 .mpo_system_check_reboot = test_system_check_reboot,
2823 .mpo_system_check_swapoff = test_system_check_swapoff,
2824 .mpo_system_check_swapon = test_system_check_swapon,
2825 .mpo_system_check_sysctl = test_system_check_sysctl,
2826
2827 .mpo_vnode_check_access = test_vnode_check_access,
2828 .mpo_sysvmsg_cleanup = test_sysvmsg_cleanup,
2829 .mpo_sysvmsg_create = test_sysvmsg_create,
2830
2831 .mpo_sysvmsq_check_msgmsq = test_sysvmsq_check_msgmsq,
2832 .mpo_sysvmsq_check_msgrcv = test_sysvmsq_check_msgrcv,
2833 .mpo_sysvmsq_check_msgrmid = test_sysvmsq_check_msgrmid,
2834 .mpo_sysvmsq_check_msqget = test_sysvmsq_check_msqget,
2835 .mpo_sysvmsq_check_msqsnd = test_sysvmsq_check_msqsnd,
2836 .mpo_sysvmsq_check_msqrcv = test_sysvmsq_check_msqrcv,
2837 .mpo_sysvmsq_check_msqctl = test_sysvmsq_check_msqctl,
2838 .mpo_sysvmsq_cleanup = test_sysvmsq_cleanup,
2839 .mpo_sysvmsq_create = test_sysvmsq_create,
2840
2841 .mpo_sysvsem_check_semctl = test_sysvsem_check_semctl,
2842 .mpo_sysvsem_check_semget = test_sysvsem_check_semget,
2843 .mpo_sysvsem_check_semop = test_sysvsem_check_semop,
2844 .mpo_sysvsem_cleanup = test_sysvsem_cleanup,
2845 .mpo_sysvsem_create = test_sysvsem_create,
2846
2847 .mpo_sysvshm_check_shmat = test_sysvshm_check_shmat,
2848 .mpo_sysvshm_check_shmctl = test_sysvshm_check_shmctl,
2849 .mpo_sysvshm_check_shmdt = test_sysvshm_check_shmdt,
2850 .mpo_sysvshm_check_shmget = test_sysvshm_check_shmget,
2851 .mpo_sysvshm_cleanup = test_sysvshm_cleanup,
2852 .mpo_sysvshm_create = test_sysvshm_create,
2853
2854 .mpo_thread_userret = test_thread_userret,
2855
2856 .mpo_vnode_associate_extattr = test_vnode_associate_extattr,
2857 .mpo_vnode_associate_singlelabel = test_vnode_associate_singlelabel,
2858 .mpo_vnode_check_chdir = test_vnode_check_chdir,
2859 .mpo_vnode_check_chroot = test_vnode_check_chroot,
2860 .mpo_vnode_check_create = test_vnode_check_create,
2861 .mpo_vnode_check_deleteacl = test_vnode_check_deleteacl,
2862 .mpo_vnode_check_deleteextattr = test_vnode_check_deleteextattr,
2863 .mpo_vnode_check_exec = test_vnode_check_exec,
2864 .mpo_vnode_check_getacl = test_vnode_check_getacl,
2865 .mpo_vnode_check_getextattr = test_vnode_check_getextattr,

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

2880 .mpo_vnode_check_setextattr = test_vnode_check_setextattr,
2881 .mpo_vnode_check_setflags = test_vnode_check_setflags,
2882 .mpo_vnode_check_setmode = test_vnode_check_setmode,
2883 .mpo_vnode_check_setowner = test_vnode_check_setowner,
2884 .mpo_vnode_check_setutimes = test_vnode_check_setutimes,
2885 .mpo_vnode_check_stat = test_vnode_check_stat,
2886 .mpo_vnode_check_unlink = test_vnode_check_unlink,
2887 .mpo_vnode_check_write = test_vnode_check_write,
2888 .mpo_vnode_copy_label = test_vnode_copy_label,
2889 .mpo_vnode_create_extattr = test_vnode_create_extattr,
2890 .mpo_vnode_destroy_label = test_vnode_destroy_label,
2891 .mpo_vnode_execve_transition = test_vnode_execve_transition,
2892 .mpo_vnode_execve_will_transition = test_vnode_execve_will_transition,
2893 .mpo_vnode_externalize_label = test_vnode_externalize_label,
2894 .mpo_vnode_init_label = test_vnode_init_label,
2895 .mpo_vnode_internalize_label = test_internalize_label,
2896 .mpo_vnode_relabel = test_vnode_relabel,
2897 .mpo_vnode_setlabel_extattr = test_vnode_setlabel_extattr,
2898};
2899
2900MAC_POLICY_SET(&test_ops, mac_test, "TrustedBSD MAC/Test",
2901 MPC_LOADTIME_FLAG_UNLOADOK | MPC_LOADTIME_FLAG_LABELMBUFS, &test_slot);