/usr/share/cagefs-skeleton/lib64/python3.9/site-packages/setools/diff
# Copyright 2016, Tresys Technology, LLC # # SPDX-License-Identifier: LGPL-2.1-only # from typing import NamedTuple, Optional from ..policyrep import Default, DefaultRuletype, DefaultValue, DefaultRangeValue, ObjClass from .descriptors import DiffResultDescriptor from .difference import Difference, SymbolWrapper, Wrapper class ModifiedDefault(NamedTuple): """Difference details for a modified default_*.""" rule: Default added_default: Optional[DefaultValue] removed_default: Optional[DefaultValue] added_default_range: Optional[DefaultRangeValue] removed_default_range: Optional[DefaultRangeValue] class DefaultsDifference(Difference): """Determine the difference in default_* between two policies.""" added_defaults = DiffResultDescriptor("diff_defaults") removed_defaults = DiffResultDescriptor("diff_defaults") modified_defaults = DiffResultDescriptor("diff_defaults") def diff_defaults(self) -> None: """Generate the difference in type defaults between the policies.""" self.log.info( "Generating default_* differences from {0.left_policy} to {0.right_policy}". format(self)) self.added_defaults, self.removed_defaults, matched_defaults = self._set_diff( (DefaultWrapper(d) for d in self.left_policy.defaults()), (DefaultWrapper(d) for d in self.right_policy.defaults())) self.modified_defaults = [] for left_default, right_default in matched_defaults: # Criteria for modified defaults # 1. change to default setting # 2. change to default range if left_default.default != right_default.default: removed_default = left_default.default added_default = right_default.default else: removed_default = None added_default = None try: if left_default.default_range != right_default.default_range: removed_default_range = left_default.default_range added_default_range = right_default.default_range else: removed_default_range = None added_default_range = None except AttributeError: removed_default_range = None added_default_range = None if removed_default or removed_default_range: self.modified_defaults.append( ModifiedDefault(left_default, added_default, removed_default, added_default_range, removed_default_range)) # # Internal functions # def _reset_diff(self) -> None: """Reset diff results on policy changes.""" self.log.debug("Resetting default_* differences") self.added_defaults = None self.removed_defaults = None self.modified_defaults = None class DefaultWrapper(Wrapper[Default]): """Wrap default_* to allow comparisons.""" __slots__ = ("ruletype", "tclass") def __init__(self, default: Default) -> None: self.origin = default self.ruletype = default.ruletype self.tclass = SymbolWrapper(default.tclass) self.key = hash(default) def __hash__(self): return self.key def __lt__(self, other): return self.key < other.key def __eq__(self, other): return self.ruletype == other.ruletype and \ self.tclass == other.tclass
.
Edit
..
Edit
__init__.py
Edit
__pycache__
Edit
bool.py
Edit
bounds.py
Edit
commons.py
Edit
conditional.py
Edit
constraints.py
Edit
context.py
Edit
default.py
Edit
descriptors.py
Edit
difference.py
Edit
fsuse.py
Edit
genfscon.py
Edit
ibendportcon.py
Edit
ibpkeycon.py
Edit
initsid.py
Edit
mls.py
Edit
mlsrules.py
Edit
netifcon.py
Edit
nodecon.py
Edit
objclass.py
Edit
polcap.py
Edit
portcon.py
Edit
properties.py
Edit
rbacrules.py
Edit
roles.py
Edit
terules.py
Edit
typeattr.py
Edit
types.py
Edit
typing.py
Edit
users.py
Edit