1 /* SPDX-License-Identifier: GPL-2.0 */
3 * Landlock variants for three processes with various domains.
5 * Copyright © 2024 Tahera Fahimi <fahimitahera@gmail.com>
11 /* Any other type of sandboxing domain */
16 FIXTURE_VARIANT(scoped_vs_unscoped
)
19 const int domain_parent
;
20 const int domain_children
;
21 const int domain_child
;
22 const int domain_grand_child
;
27 * | ####### | P3 -> P2 : allow
28 * | P1----# P2 # | P3 -> P1 : deny
34 /* clang-format off */
35 FIXTURE_VARIANT_ADD(scoped_vs_unscoped
, deny_scoped
) {
36 .domain_all
= OTHER_SANDBOX
,
37 .domain_parent
= NO_SANDBOX
,
38 .domain_children
= SCOPE_SANDBOX
,
39 .domain_child
= NO_SANDBOX
,
40 .domain_grand_child
= NO_SANDBOX
,
46 * # ####### # P3 -> P2 : allow
47 * # P1----# P2 # # P3 -> P1 : deny
53 /* clang-format off */
54 FIXTURE_VARIANT_ADD(scoped_vs_unscoped
, all_scoped
) {
55 .domain_all
= SCOPE_SANDBOX
,
56 .domain_parent
= NO_SANDBOX
,
57 .domain_children
= SCOPE_SANDBOX
,
58 .domain_child
= NO_SANDBOX
,
59 .domain_grand_child
= NO_SANDBOX
,
65 * | .-----. | P3 -> P2 : allow
66 * | P1----| P2 | | P3 -> P1 : allow
72 /* clang-format off */
73 FIXTURE_VARIANT_ADD(scoped_vs_unscoped
, allow_with_other_domain
) {
74 .domain_all
= OTHER_SANDBOX
,
75 .domain_parent
= NO_SANDBOX
,
76 .domain_children
= OTHER_SANDBOX
,
77 .domain_child
= NO_SANDBOX
,
78 .domain_grand_child
= NO_SANDBOX
,
83 * .----. ###### P3 -> P2 : allow
84 * | P1 |----# P2 # P3 -> P1 : allow
89 /* clang-format off */
90 FIXTURE_VARIANT_ADD(scoped_vs_unscoped
, allow_with_one_domain
) {
91 .domain_all
= NO_SANDBOX
,
92 .domain_parent
= OTHER_SANDBOX
,
93 .domain_children
= NO_SANDBOX
,
94 .domain_child
= SCOPE_SANDBOX
,
95 .domain_grand_child
= NO_SANDBOX
,
100 * ###### .-----. P3 -> P2 : allow
101 * # P1 #----| P2 | P3 -> P1 : allow
106 /* clang-format off */
107 FIXTURE_VARIANT_ADD(scoped_vs_unscoped
, allow_with_grand_parent_scoped
) {
108 .domain_all
= NO_SANDBOX
,
109 .domain_parent
= SCOPE_SANDBOX
,
110 .domain_children
= NO_SANDBOX
,
111 .domain_child
= OTHER_SANDBOX
,
112 .domain_grand_child
= NO_SANDBOX
,
113 /* clang-format on */
117 * ###### ###### P3 -> P2 : allow
118 * # P1 #----# P2 # P3 -> P1 : allow
125 /* clang-format off */
126 FIXTURE_VARIANT_ADD(scoped_vs_unscoped
, allow_with_parents_domain
) {
127 .domain_all
= NO_SANDBOX
,
128 .domain_parent
= SCOPE_SANDBOX
,
129 .domain_children
= NO_SANDBOX
,
130 .domain_child
= SCOPE_SANDBOX
,
131 .domain_grand_child
= NO_SANDBOX
,
132 /* clang-format on */
136 * ###### P3 -> P2 : deny
137 * # P1 #----P2 P3 -> P1 : deny
144 /* clang-format off */
145 FIXTURE_VARIANT_ADD(scoped_vs_unscoped
, deny_with_self_and_grandparent_domain
) {
146 .domain_all
= NO_SANDBOX
,
147 .domain_parent
= SCOPE_SANDBOX
,
148 .domain_children
= NO_SANDBOX
,
149 .domain_child
= NO_SANDBOX
,
150 .domain_grand_child
= SCOPE_SANDBOX
,
151 /* clang-format on */