MCPcopy Create free account
hub / github.com/F-Stack/f-stack / mls_dominate_element

Function mls_dominate_element

freebsd/security/mac_mls/mac_mls.c:166–216  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

164}
165
166static int
167mls_dominate_element(struct mac_mls_element *a, struct mac_mls_element *b)
168{
169 int bit;
170
171 switch (a->mme_type) {
172 case MAC_MLS_TYPE_EQUAL:
173 case MAC_MLS_TYPE_HIGH:
174 return (1);
175
176 case MAC_MLS_TYPE_LOW:
177 switch (b->mme_type) {
178 case MAC_MLS_TYPE_LEVEL:
179 case MAC_MLS_TYPE_HIGH:
180 return (0);
181
182 case MAC_MLS_TYPE_EQUAL:
183 case MAC_MLS_TYPE_LOW:
184 return (1);
185
186 default:
187 panic("mls_dominate_element: b->mme_type invalid");
188 }
189
190 case MAC_MLS_TYPE_LEVEL:
191 switch (b->mme_type) {
192 case MAC_MLS_TYPE_EQUAL:
193 case MAC_MLS_TYPE_LOW:
194 return (1);
195
196 case MAC_MLS_TYPE_HIGH:
197 return (0);
198
199 case MAC_MLS_TYPE_LEVEL:
200 for (bit = 1; bit <= MAC_MLS_MAX_COMPARTMENTS; bit++)
201 if (!MAC_MLS_BIT_TEST(bit,
202 a->mme_compartments) &&
203 MAC_MLS_BIT_TEST(bit, b->mme_compartments))
204 return (0);
205 return (a->mme_level >= b->mme_level);
206
207 default:
208 panic("mls_dominate_element: b->mme_type invalid");
209 }
210
211 default:
212 panic("mls_dominate_element: a->mme_type invalid");
213 }
214
215 return (0);
216}
217
218static int
219mls_range_in_range(struct mac_mls *rangea, struct mac_mls *rangeb)

Callers 4

mls_range_in_rangeFunction · 0.85
mls_effective_in_rangeFunction · 0.85
mls_dominate_effectiveFunction · 0.85
mls_validFunction · 0.85

Calls 1

panicFunction · 0.50

Tested by

no test coverage detected