diff --git a/tests/mini_parser.py b/tests/mini_parser.py index 57b3d59f82cd628b3a48a8b16c70aaf171267a6a..fbeaff8e59ffd7d6e442a0e97eb498fdec3c2a70 100644 --- a/tests/mini_parser.py +++ b/tests/mini_parser.py @@ -41,12 +41,12 @@ class MiniCilParser: def _parseType(self, stmt): m = re.match(r"type\s+(.+)", stmt) - self.types.update(set(m.group(1))) + self.types.add(m.group(1)) return def _parseTypeattribute(self, stmt): m = re.match(r"typeattribute\s+(.+)", stmt) - self.typeattributes.update(set(m.group(1))) + self.typeattributes.add(m.group(1)) return def _parseTypeattributeset(self, stmt): @@ -67,7 +67,7 @@ class MiniCilParser: # check to see if this typeattributeset is a versioned public type pub = re.match(r"(\w+)_\d+_\d+", ta) if pub is not None: - self.pubtypes.update(set(pub.group(1))) + self.pubtypes.add(pub.group(1)) return def _parseStmt(self, stmt): diff --git a/tests/treble_sepolicy_tests.py b/tests/treble_sepolicy_tests.py index f659677587fc60254433458c9a0a32e86b1565e7..c48066d1b27b7fb817afd74f96a69f6afec8713d 100644 --- a/tests/treble_sepolicy_tests.py +++ b/tests/treble_sepolicy_tests.py @@ -212,6 +212,7 @@ def TestCoredomainViolations(): def TestNoUnmappedNewTypes(): global alltypes global oldalltypes + global compatMapping newt = alltypes - oldalltypes ret = "" violators = [] @@ -228,8 +229,31 @@ def TestNoUnmappedNewTypes(): ret += " ".join(str(x) for x in sorted(violators)) + "\n" return ret +### +# Make sure that any public type removed in the current policy has its +# declaration added to the mapping file for use in non-platform policy +def TestNoUnmappedRmTypes(): + global alltypes + global oldalltypes + global compatMapping + rmt = oldalltypes - alltypes + ret = "" + violators = [] + + for o in rmt: + if o in compatMapping.pubtypes and not o in compatMapping.types: + violators.append(o) + + if len(violators) > 0: + ret += "SELinux: The following formerly public types were removed from " + ret += "policy without a declaration in the compatibility mapping " + ret += "file(s) found in prebuilts/api/" + compatMapping.apiLevel + "/\n" + ret += " ".join(str(x) for x in sorted(violators)) + "\n" + return ret + def TestTrebleCompatMapping(): ret = TestNoUnmappedNewTypes() + ret += TestNoUnmappedRmTypes() return ret ### # extend OptionParser to allow the same option flag to be used multiple times.