1#!/usr/bin/env atf-sh 2# 3# Copyright (c) 2026, The FreeBSD Foundation 4# 5# This software was developed by Olivier Certner <olce@FreeBSD.org> at 6# Kumacom SARL under sponsorship from the FreeBSD Foundation. 7 8atf_test_case rule_no_target_part 9rule_no_target_part_head() 10{ 11 atf_set descr "Missing target part in a rule" 12} 13rule_no_target_part_body() 14{ 15 sysctl_set_and_check_fails_rules "uid=0>" 16 sysctl_set_and_check_fails_rules "gid=0>" 17 sysctl_set_and_check_fails_rules "uid=0" 18 sysctl_set_and_check_fails_rules "gid=0" 19} 20 21atf_test_case rule_no_match_part 22rule_no_match_part_head() 23{ 24 atf_set descr "Missing match part in a rule" 25} 26rule_no_match_part_body() 27{ 28 sysctl_set_and_check_fails_rules ">uid=0" 29 sysctl_set_and_check_fails_rules ">gid=0" 30} 31 32atf_test_case rule_space_between_flag_and_gid_fail 33rule_space_between_flag_and_gid_fail_head() 34{ 35 atf_set descr "No space allowed between flag and GID" 36} 37rule_space_between_flag_and_gid_fail_body() 38{ 39 sysctl_set_and_check_fails_rules "uid=1001>uid=0,gid=0,+ gid=0" 40} 41 42atf_test_case rule_user_names_fail 43rule_user_names_fail_head() 44{ 45 atf_set descr "Reject user names (only numerical IDs supported)" 46} 47rule_user_names_fail_body() 48{ 49 sysctl_set_and_check_fails_rules "uid=user>uid=0" 50 sysctl_set_and_check_fails_rules "uid=1001>uid=root" 51} 52 53atf_test_case rule_group_names_fail 54rule_group_names_fail_head() 55{ 56 atf_set descr "Reject group names (only numerical IDs supported)" 57} 58rule_group_names_fail_body() 59{ 60 sysctl_set_and_check_fails_rules "gid=group>gid=0" 61 sysctl_set_and_check_fails_rules "gid=1001>gid=root" 62 sysctl_set_and_check_fails_rules "gid=1001>gid=0,+gid=operator" 63} 64 65atf_test_case rules_wrong_separator 66rules_wrong_separator_head() 67{ 68 atf_set descr "Wrong rules separator" 69} 70rules_wrong_separator_body() 71{ 72 sysctl_set_and_check_fails_rules "uid=1001>gid=0:gid=1001>gid=5" 73} 74 75 76atf_init_test_cases() 77{ 78 . $(atf_get_srcdir)/common.sh 79 80 atf_add_test_case rule_no_target_part 81 atf_add_test_case rule_no_match_part 82 atf_add_test_case rule_space_between_flag_and_gid_fail 83 atf_add_test_case rule_user_names_fail 84 atf_add_test_case rule_group_names_fail 85 atf_add_test_case rules_wrong_separator 86} 87