Home | History | Annotate | Download | only in util
      1 #!/usr/bin/python3 -E
      2 import sys
      3 import selinux
      4 
      5 
      6 verbose = 0
      7 errors = 0
      8 
      9 
     10 def untrans(trans, val):
     11     global errors, verbose
     12     (rc, raw) = selinux.selinux_trans_to_raw_context(trans)
     13     if raw != val:
     14         print("untrans: '%s' -> '%s' != '%s' FAILED" % (trans, raw, val))
     15         errors += 1
     16     else:
     17         if verbose:
     18             print("untrans: %s -> %s != %s SUCCESS" % (trans, raw, val))
     19 
     20 
     21 def trans(raw, val):
     22     global errors, verbose
     23     (rc, trans) = selinux.selinux_raw_to_trans_context(raw)
     24     if trans != val:
     25         print("trans: '%s' -> '%s' != '%s' FAILED" % (raw, trans, val))
     26         errors += 1
     27     else:
     28         if verbose:
     29             print("trans: %s -> %s != %s SUCCESS" % (raw, trans, val))
     30 
     31 
     32 if len(sys.argv) > 1 and sys.argv[1] == "-v":
     33     verbose = 1
     34 
     35 for arg in sys.argv[1:]:
     36     f = open(arg, 'r')
     37     for line in f:
     38         if line.startswith('#'):
     39             continue
     40         if not line.strip():
     41             continue
     42         line = line.rstrip('\n')
     43         if line.find("==") != -1:
     44             t, r = line.split("==")
     45             untrans("a:b:c:" + t, "a:b:c:" + r)
     46             trans("a:b:c:" + r, "a:b:c:" + t)
     47         else:
     48             t, r = line.split("=")
     49             untrans("a:b:c:" + t, "a:b:c:" + r)
     50     f.close()
     51 
     52 s = "s"
     53 if errors == 1:
     54     s = ""
     55 print("mlstrans-test done with %d error%s" % (errors, s))
     56 
     57 sys.exit(errors)
     58