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

Function biba_valid

freebsd/security/mac_biba/mac_biba.c:357–427  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

355}
356
357static int
358biba_valid(struct mac_biba *mb)
359{
360
361 if (mb->mb_flags & MAC_BIBA_FLAG_EFFECTIVE) {
362 switch (mb->mb_effective.mbe_type) {
363 case MAC_BIBA_TYPE_GRADE:
364 break;
365
366 case MAC_BIBA_TYPE_EQUAL:
367 case MAC_BIBA_TYPE_HIGH:
368 case MAC_BIBA_TYPE_LOW:
369 if (mb->mb_effective.mbe_grade != 0 ||
370 !MAC_BIBA_BIT_SET_EMPTY(
371 mb->mb_effective.mbe_compartments))
372 return (EINVAL);
373 break;
374
375 default:
376 return (EINVAL);
377 }
378 } else {
379 if (mb->mb_effective.mbe_type != MAC_BIBA_TYPE_UNDEF)
380 return (EINVAL);
381 }
382
383 if (mb->mb_flags & MAC_BIBA_FLAG_RANGE) {
384 switch (mb->mb_rangelow.mbe_type) {
385 case MAC_BIBA_TYPE_GRADE:
386 break;
387
388 case MAC_BIBA_TYPE_EQUAL:
389 case MAC_BIBA_TYPE_HIGH:
390 case MAC_BIBA_TYPE_LOW:
391 if (mb->mb_rangelow.mbe_grade != 0 ||
392 !MAC_BIBA_BIT_SET_EMPTY(
393 mb->mb_rangelow.mbe_compartments))
394 return (EINVAL);
395 break;
396
397 default:
398 return (EINVAL);
399 }
400
401 switch (mb->mb_rangehigh.mbe_type) {
402 case MAC_BIBA_TYPE_GRADE:
403 break;
404
405 case MAC_BIBA_TYPE_EQUAL:
406 case MAC_BIBA_TYPE_HIGH:
407 case MAC_BIBA_TYPE_LOW:
408 if (mb->mb_rangehigh.mbe_grade != 0 ||
409 !MAC_BIBA_BIT_SET_EMPTY(
410 mb->mb_rangehigh.mbe_compartments))
411 return (EINVAL);
412 break;
413
414 default:

Callers 2

biba_parseFunction · 0.85

Calls 1

biba_dominate_elementFunction · 0.85

Tested by

no test coverage detected