mirror of
https://github.com/SELinuxProject/setools
synced 2025-04-11 03:51:26 +00:00
Update static testing and fix identified issues.
* Change pep8 to new pycodestyle tool. * Load the policrep extension in pylint
This commit is contained in:
parent
2b4d69d42e
commit
6d7a672611
@ -28,7 +28,7 @@ unsafe-load-any-extension=no
|
||||
# A comma-separated list of package or module names from where C extensions may
|
||||
# be loaded. Extensions are loading into the active Python interpreter and may
|
||||
# run arbitrary code
|
||||
extension-pkg-whitelist=
|
||||
extension-pkg-whitelist=setools.policyrep
|
||||
|
||||
# Allow optimization of some AST trees. This will activate a peephole AST
|
||||
# optimizer, which will apply various small optimizations. For instance, it can
|
||||
|
1
sedta
1
sedta
@ -66,6 +66,7 @@ def print_transition(trans):
|
||||
|
||||
print()
|
||||
|
||||
|
||||
parser = argparse.ArgumentParser(
|
||||
description="SELinux policy domain transition analysis tool.",
|
||||
epilog="If no analysis is selected, all forward transitions out of the source will be printed.")
|
||||
|
8
seinfo
8
seinfo
@ -29,20 +29,20 @@ def expand_attr(attr):
|
||||
contents = items if items else "<empty attribute>"
|
||||
return "{0}\n\t{1}".format(attr.statement(), contents)
|
||||
|
||||
parser = argparse.ArgumentParser(
|
||||
description="SELinux policy information tool.")
|
||||
|
||||
parser = argparse.ArgumentParser(description="SELinux policy information tool.")
|
||||
parser.add_argument("--version", action="version", version=setools.__version__)
|
||||
parser.add_argument("policy", help="Path to the SELinux policy to query.", nargs="?")
|
||||
parser.add_argument("-x", "--expand", action="store_true",
|
||||
help="Print additional information about the specified components.")
|
||||
parser.add_argument("--flat", help="Print without item count nor indentation.",
|
||||
parser.add_argument("--flat", help="Print without item count nor indentation.",
|
||||
dest="flat", default=False, action="store_true")
|
||||
parser.add_argument("-v", "--verbose", action="store_true",
|
||||
help="Print extra informational messages")
|
||||
parser.add_argument("--debug", action="store_true", dest="debug", help="Enable debugging.")
|
||||
|
||||
queries = parser.add_argument_group("Component Queries")
|
||||
queries.add_argument("-a", "--attribute", help="Print type attributes.", dest="typeattrquery",
|
||||
queries.add_argument("-a", "--attribute", help="Print type attributes.", dest="typeattrquery",
|
||||
nargs='?', const=True, metavar="ATTR")
|
||||
queries.add_argument("-b", "--bool", help="Print Booleans.", dest="boolquery",
|
||||
nargs='?', const=True, metavar="BOOL")
|
||||
|
@ -29,8 +29,8 @@ import logging
|
||||
|
||||
# Python classes for policy representation
|
||||
from .policyrep import SELinuxPolicy, BoundsRuletype, ConstraintRuletype, DefaultRuletype, \
|
||||
DefaultRangeValue, DefaultValue, FSUseRuletype, HandleUnknown, MLSRuletype, \
|
||||
NodeconIPVersion, PolicyTarget, PortconProtocol, RBACRuletype, TERuletype
|
||||
DefaultRangeValue, DefaultValue, FSUseRuletype, HandleUnknown, MLSRuletype, \
|
||||
NodeconIPVersion, PolicyTarget, PortconProtocol, RBACRuletype, TERuletype
|
||||
|
||||
# Exceptions
|
||||
from . import exception
|
||||
|
@ -125,24 +125,24 @@ class ConstraintQuery(MatchObjClass, MatchPermission, PolicyQuery):
|
||||
continue
|
||||
|
||||
if self.role and not self._match_expr(
|
||||
c.roles,
|
||||
self.role,
|
||||
self.role_indirect,
|
||||
self.role_regex):
|
||||
continue
|
||||
c.roles,
|
||||
self.role,
|
||||
self.role_indirect,
|
||||
self.role_regex):
|
||||
continue
|
||||
|
||||
if self.type_ and not self._match_expr(
|
||||
c.types,
|
||||
self.type_,
|
||||
self.type_indirect,
|
||||
self.type_regex):
|
||||
continue
|
||||
c.types,
|
||||
self.type_,
|
||||
self.type_indirect,
|
||||
self.type_regex):
|
||||
continue
|
||||
|
||||
if self.user and not self._match_expr(
|
||||
c.users,
|
||||
self.user,
|
||||
False,
|
||||
self.user_regex):
|
||||
continue
|
||||
c.users,
|
||||
self.user,
|
||||
False,
|
||||
self.user_regex):
|
||||
continue
|
||||
|
||||
yield c
|
||||
|
@ -114,4 +114,4 @@ class BoundsWrapper(Wrapper):
|
||||
|
||||
def __eq__(self, other):
|
||||
return self.ruletype == other.ruletype and \
|
||||
self.child == other.child
|
||||
self.child == other.child
|
||||
|
@ -221,6 +221,6 @@ class ConstraintWrapper(Wrapper):
|
||||
|
||||
def __eq__(self, other):
|
||||
return self.ruletype == other.ruletype and \
|
||||
self.tclass == other.tclass and \
|
||||
self.perms == other.perms and \
|
||||
self.expr == other.expr
|
||||
self.tclass == other.tclass and \
|
||||
self.perms == other.perms and \
|
||||
self.expr == other.expr
|
||||
|
@ -45,6 +45,6 @@ class ContextWrapper(Wrapper):
|
||||
|
||||
def __eq__(self, other):
|
||||
return self.user == other.user and \
|
||||
self.role == other.role and \
|
||||
self.type_ == other.type_ and \
|
||||
self.range_ == other.range_
|
||||
self.role == other.role and \
|
||||
self.type_ == other.type_ and \
|
||||
self.range_ == other.range_
|
||||
|
@ -112,4 +112,4 @@ class DefaultWrapper(Wrapper):
|
||||
|
||||
def __eq__(self, other):
|
||||
return self.ruletype == other.ruletype and \
|
||||
self.tclass == other.tclass
|
||||
self.tclass == other.tclass
|
||||
|
@ -114,17 +114,18 @@ class Difference:
|
||||
"Matched items assertion failure (this is an SETools bug), {0} != {1}". \
|
||||
format(len(left_matched_items), len(right_matched_items))
|
||||
|
||||
for l, r in zip(left_matched_items, right_matched_items):
|
||||
assert l == r, \
|
||||
"Matched items assertion failure (this is an SETools bug), {0} != {1}".format(l, r)
|
||||
for left, right in zip(left_matched_items, right_matched_items):
|
||||
assert left == right, \
|
||||
"Matched items assertion failure (this is an SETools bug), {0} != {1}".format(
|
||||
left, right)
|
||||
|
||||
matched_items.add((l, r))
|
||||
matched_items.add((left, right))
|
||||
|
||||
try:
|
||||
# unwrap the objects
|
||||
return set(i.origin for i in added_items), \
|
||||
set(i.origin for i in removed_items), \
|
||||
set((l.origin, r.origin) for (l, r) in matched_items)
|
||||
set(i.origin for i in removed_items), \
|
||||
set((left.origin, right.origin) for (left, right) in matched_items)
|
||||
except AttributeError:
|
||||
return added_items, removed_items, matched_items
|
||||
|
||||
|
@ -90,5 +90,5 @@ class GenfsconWrapper(Wrapper):
|
||||
|
||||
def __eq__(self, other):
|
||||
return self.fs == other.fs and \
|
||||
self.path == other.path and \
|
||||
self.filetype == other.filetype
|
||||
self.path == other.path and \
|
||||
self.filetype == other.filetype
|
||||
|
@ -237,7 +237,7 @@ class LevelWrapper(Wrapper):
|
||||
def __eq__(self, other):
|
||||
try:
|
||||
return self.sensitivity == other.sensitivity and \
|
||||
self.categories == other.categories
|
||||
self.categories == other.categories
|
||||
except AttributeError:
|
||||
# comparing an MLS policy to non-MLS policy will result in
|
||||
# other being None
|
||||
@ -264,7 +264,7 @@ class RangeWrapper(Wrapper):
|
||||
def __eq__(self, other):
|
||||
try:
|
||||
return self.low == other.low and \
|
||||
self.high == other.high
|
||||
self.high == other.high
|
||||
except AttributeError:
|
||||
# comparing an MLS policy to non-MLS policy will result in
|
||||
# other being None
|
||||
|
@ -55,10 +55,10 @@ class MLSRulesDifference(Difference):
|
||||
self._create_mls_rule_lists()
|
||||
|
||||
added, removed, matched = self._set_diff(
|
||||
self._expand_generator(self._left_mls_rules[MLSRuletype.range_transition],
|
||||
MLSRuleWrapper),
|
||||
self._expand_generator(self._right_mls_rules[MLSRuletype.range_transition],
|
||||
MLSRuleWrapper))
|
||||
self._expand_generator(self._left_mls_rules[MLSRuletype.range_transition],
|
||||
MLSRuleWrapper),
|
||||
self._expand_generator(self._right_mls_rules[MLSRuletype.range_transition],
|
||||
MLSRuleWrapper))
|
||||
|
||||
modified = []
|
||||
|
||||
@ -126,5 +126,5 @@ class MLSRuleWrapper(Wrapper):
|
||||
# because MLSRuleDifference groups rules by ruletype,
|
||||
# the ruletype always matches.
|
||||
return self.source == other.source and \
|
||||
self.target == other.target and \
|
||||
self.tclass == other.tclass
|
||||
self.target == other.target and \
|
||||
self.tclass == other.tclass
|
||||
|
@ -88,4 +88,4 @@ class NodeconWrapper(Wrapper):
|
||||
|
||||
def __eq__(self, other):
|
||||
return self.ip_version == other.ip_version and \
|
||||
self.network == other.network
|
||||
self.network == other.network
|
||||
|
@ -87,5 +87,5 @@ class PortconWrapper(Wrapper):
|
||||
|
||||
def __eq__(self, other):
|
||||
return self.protocol == other.protocol and \
|
||||
self.low == other.low and \
|
||||
self.high == other.high
|
||||
self.low == other.low and \
|
||||
self.high == other.high
|
||||
|
@ -170,5 +170,5 @@ class RoleTransitionWrapper(Wrapper):
|
||||
# because RBACRuleDifference groups rules by ruletype,
|
||||
# the ruletype always matches.
|
||||
return self.source == other.source and \
|
||||
self.target == other.target and \
|
||||
self.tclass == other.tclass
|
||||
self.target == other.target and \
|
||||
self.tclass == other.tclass
|
||||
|
@ -81,8 +81,8 @@ def av_diff_template(ruletype):
|
||||
self._create_te_rule_lists()
|
||||
|
||||
added, removed, matched = self._set_diff(
|
||||
_avrule_expand_generator(self._left_te_rules[ruletype], AVRuleWrapper),
|
||||
_avrule_expand_generator(self._right_te_rules[ruletype], AVRuleWrapper))
|
||||
_avrule_expand_generator(self._left_te_rules[ruletype], AVRuleWrapper),
|
||||
_avrule_expand_generator(self._right_te_rules[ruletype], AVRuleWrapper))
|
||||
|
||||
modified = []
|
||||
for left_rule, right_rule in matched:
|
||||
@ -128,8 +128,8 @@ def avx_diff_template(ruletype):
|
||||
self._create_te_rule_lists()
|
||||
|
||||
added, removed, matched = self._set_diff(
|
||||
_avrule_expand_generator(self._left_te_rules[ruletype], AVRuleXpermWrapper),
|
||||
_avrule_expand_generator(self._right_te_rules[ruletype], AVRuleXpermWrapper))
|
||||
_avrule_expand_generator(self._left_te_rules[ruletype], AVRuleXpermWrapper),
|
||||
_avrule_expand_generator(self._right_te_rules[ruletype], AVRuleXpermWrapper))
|
||||
|
||||
modified = []
|
||||
for left_rule, right_rule in matched:
|
||||
@ -175,8 +175,8 @@ def te_diff_template(ruletype):
|
||||
self._create_te_rule_lists()
|
||||
|
||||
added, removed, matched = self._set_diff(
|
||||
self._expand_generator(self._left_te_rules[ruletype], TERuleWrapper),
|
||||
self._expand_generator(self._right_te_rules[ruletype], TERuleWrapper))
|
||||
self._expand_generator(self._left_te_rules[ruletype], TERuleWrapper),
|
||||
self._expand_generator(self._right_te_rules[ruletype], TERuleWrapper))
|
||||
|
||||
modified = []
|
||||
for left_rule, right_rule in matched:
|
||||
@ -349,10 +349,10 @@ class AVRuleWrapper(Wrapper):
|
||||
# because TERuleDifference groups rules by ruletype,
|
||||
# the ruletype always matches.
|
||||
return self.source == other.source and \
|
||||
self.target == other.target and \
|
||||
self.tclass == other.tclass and \
|
||||
self.conditional == other.conditional and \
|
||||
self.conditional_block == other.conditional_block
|
||||
self.target == other.target and \
|
||||
self.tclass == other.tclass and \
|
||||
self.conditional == other.conditional and \
|
||||
self.conditional_block == other.conditional_block
|
||||
|
||||
|
||||
class AVRuleXpermWrapper(Wrapper):
|
||||
@ -379,9 +379,9 @@ class AVRuleXpermWrapper(Wrapper):
|
||||
# because TERuleDifference groups rules by ruletype,
|
||||
# the ruletype always matches.
|
||||
return self.source == other.source and \
|
||||
self.target == other.target and \
|
||||
self.tclass == other.tclass and \
|
||||
self.xperm_type == other.xperm_type
|
||||
self.target == other.target and \
|
||||
self.tclass == other.tclass and \
|
||||
self.xperm_type == other.xperm_type
|
||||
|
||||
|
||||
class TERuleWrapper(Wrapper):
|
||||
@ -419,8 +419,8 @@ class TERuleWrapper(Wrapper):
|
||||
# because TERuleDifference groups rules by ruletype,
|
||||
# the ruletype always matches.
|
||||
return self.source == other.source and \
|
||||
self.target == other.target and \
|
||||
self.tclass == other.tclass and \
|
||||
self.conditional == other.conditional and \
|
||||
self.conditional_block == other.conditional_block and \
|
||||
self.filename == self.filename
|
||||
self.target == other.target and \
|
||||
self.tclass == other.tclass and \
|
||||
self.conditional == other.conditional and \
|
||||
self.conditional_block == other.conditional_block and \
|
||||
self.filename == self.filename
|
||||
|
@ -157,6 +157,8 @@ class InvalidUser(InvalidSymbol):
|
||||
#
|
||||
# Rule type exceptions
|
||||
#
|
||||
|
||||
|
||||
class InvalidRuleType(InvalidSymbol):
|
||||
|
||||
"""Exception for invalid rule types."""
|
||||
|
@ -116,7 +116,7 @@ class TERuleQuery(mixins.MatchObjClass, mixins.MatchPermission, query.PolicyQuer
|
||||
if high < low:
|
||||
high, low = low, high
|
||||
|
||||
pending_xperms.update(i for i in range(low, high+1))
|
||||
pending_xperms.update(i for i in range(low, high + 1))
|
||||
|
||||
self._xperms = pending_xperms
|
||||
else:
|
||||
|
@ -126,18 +126,18 @@ def match_range(obj, criteria, subset, overlap, superset, proper):
|
||||
|
||||
if overlap:
|
||||
return ((obj.low <= criteria.low <= obj.high) or (
|
||||
obj.low <= criteria.high <= obj.high) or (
|
||||
criteria.low <= obj.low and obj.high <= criteria.high))
|
||||
obj.low <= criteria.high <= obj.high) or (
|
||||
criteria.low <= obj.low and obj.high <= criteria.high))
|
||||
elif subset:
|
||||
if proper:
|
||||
return ((obj.low < criteria.low and criteria.high <= obj.high) or (
|
||||
obj.low <= criteria.low and criteria.high < obj.high))
|
||||
obj.low <= criteria.low and criteria.high < obj.high))
|
||||
else:
|
||||
return obj.low <= criteria.low and criteria.high <= obj.high
|
||||
elif superset:
|
||||
if proper:
|
||||
return ((criteria.low < obj.low and obj.high <= criteria.high) or (
|
||||
criteria.low <= obj.low and obj.high < criteria.high))
|
||||
criteria.low <= obj.low and obj.high < criteria.high))
|
||||
else:
|
||||
return (criteria.low <= obj.low and obj.high <= criteria.high)
|
||||
else:
|
||||
|
@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
|
||||
from .exception import TabFieldError
|
||||
from .queryupdater import QueryResultsUpdater
|
||||
from .workspace import load_checkboxes, load_lineedits, load_textedits, \
|
||||
save_checkboxes, save_lineedits, save_textedits
|
||||
save_checkboxes, save_lineedits, save_textedits
|
||||
|
||||
|
||||
class BoolQueryTab(AnalysisTab):
|
||||
|
@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
|
||||
from .exception import TabFieldError
|
||||
from .queryupdater import QueryResultsUpdater
|
||||
from .workspace import load_checkboxes, load_lineedits, load_textedits, \
|
||||
save_checkboxes, save_lineedits, save_textedits
|
||||
save_checkboxes, save_lineedits, save_textedits
|
||||
|
||||
|
||||
class BoundsQueryTab(AnalysisTab):
|
||||
|
@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
|
||||
from .exception import TabFieldError
|
||||
from .queryupdater import QueryResultsUpdater
|
||||
from .workspace import load_checkboxes, load_lineedits, load_textedits, \
|
||||
save_checkboxes, save_lineedits, save_textedits
|
||||
save_checkboxes, save_lineedits, save_textedits
|
||||
|
||||
|
||||
class CategoryQueryTab(AnalysisTab):
|
||||
|
@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
|
||||
from .exception import TabFieldError
|
||||
from .queryupdater import QueryResultsUpdater
|
||||
from .workspace import load_checkboxes, load_lineedits, load_listviews, load_textedits, \
|
||||
save_checkboxes, save_lineedits, save_listviews, save_textedits
|
||||
save_checkboxes, save_lineedits, save_listviews, save_textedits
|
||||
|
||||
|
||||
class CommonQueryTab(AnalysisTab):
|
||||
|
@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
|
||||
from .exception import TabFieldError
|
||||
from .queryupdater import QueryResultsUpdater
|
||||
from .workspace import load_checkboxes, load_lineedits, load_listviews, load_textedits, \
|
||||
save_checkboxes, save_lineedits, save_listviews, save_textedits
|
||||
save_checkboxes, save_lineedits, save_listviews, save_textedits
|
||||
|
||||
|
||||
class ConstraintQueryTab(AnalysisTab):
|
||||
|
@ -31,7 +31,7 @@ from ..defaultmodel import DefaultTableModel
|
||||
from .analysistab import AnalysisTab
|
||||
from .queryupdater import QueryResultsUpdater
|
||||
from .workspace import load_checkboxes, load_comboboxes, load_listviews, load_textedits, \
|
||||
save_checkboxes, save_comboboxes, save_listviews, save_textedits
|
||||
save_checkboxes, save_comboboxes, save_listviews, save_textedits
|
||||
|
||||
|
||||
class DefaultQueryTab(AnalysisTab):
|
||||
|
@ -22,7 +22,7 @@ import logging
|
||||
from PyQt5.QtCore import pyqtSignal, Qt, QStringListModel, QThread
|
||||
from PyQt5.QtGui import QPalette, QTextCursor
|
||||
from PyQt5.QtWidgets import QCompleter, QHeaderView, QMessageBox, QProgressDialog, \
|
||||
QTreeWidgetItem
|
||||
QTreeWidgetItem
|
||||
from setools import DomainTransitionAnalysis
|
||||
|
||||
from ..logtosignal import LogHandlerToSignal
|
||||
@ -30,7 +30,7 @@ from .analysistab import AnalysisTab
|
||||
from .excludetypes import ExcludeTypes
|
||||
from .exception import TabFieldError
|
||||
from .workspace import load_checkboxes, load_spinboxes, load_lineedits, load_textedits, \
|
||||
save_checkboxes, save_spinboxes, save_lineedits, save_textedits
|
||||
save_checkboxes, save_spinboxes, save_lineedits, save_textedits
|
||||
|
||||
|
||||
class DomainTransitionAnalysisTab(AnalysisTab):
|
||||
|
@ -30,7 +30,7 @@ from .analysistab import AnalysisTab
|
||||
from .exception import TabFieldError
|
||||
from .queryupdater import QueryResultsUpdater
|
||||
from .workspace import load_checkboxes, load_lineedits, load_textedits, \
|
||||
save_checkboxes, save_lineedits, save_textedits
|
||||
save_checkboxes, save_lineedits, save_textedits
|
||||
|
||||
|
||||
class FSUseQueryTab(AnalysisTab):
|
||||
|
@ -30,7 +30,7 @@ from .analysistab import AnalysisTab
|
||||
from .exception import TabFieldError
|
||||
from .queryupdater import QueryResultsUpdater
|
||||
from .workspace import load_checkboxes, load_lineedits, load_textedits, \
|
||||
save_checkboxes, save_lineedits, save_textedits
|
||||
save_checkboxes, save_lineedits, save_textedits
|
||||
|
||||
|
||||
class GenfsconQueryTab(AnalysisTab):
|
||||
|
@ -25,7 +25,7 @@ from contextlib import suppress
|
||||
from PyQt5.QtCore import pyqtSignal, Qt, QStringListModel, QThread
|
||||
from PyQt5.QtGui import QPalette, QTextCursor
|
||||
from PyQt5.QtWidgets import QCompleter, QHeaderView, QMessageBox, QProgressDialog, \
|
||||
QTreeWidgetItem
|
||||
QTreeWidgetItem
|
||||
from setools import InfoFlowAnalysis
|
||||
from setools.exception import UnmappedClass, UnmappedPermission
|
||||
|
||||
@ -35,7 +35,7 @@ from .exception import TabFieldError
|
||||
from .excludetypes import ExcludeTypes
|
||||
from .permmapedit import PermissionMapEditor
|
||||
from .workspace import load_checkboxes, load_spinboxes, load_lineedits, load_textedits, \
|
||||
save_checkboxes, save_spinboxes, save_lineedits, save_textedits
|
||||
save_checkboxes, save_spinboxes, save_lineedits, save_textedits
|
||||
|
||||
|
||||
class InfoFlowAnalysisTab(AnalysisTab):
|
||||
|
@ -30,7 +30,7 @@ from .analysistab import AnalysisTab
|
||||
from .exception import TabFieldError
|
||||
from .queryupdater import QueryResultsUpdater
|
||||
from .workspace import load_checkboxes, load_lineedits, load_textedits, \
|
||||
save_checkboxes, save_lineedits, save_textedits
|
||||
save_checkboxes, save_lineedits, save_textedits
|
||||
|
||||
|
||||
class InitialSIDQueryTab(AnalysisTab):
|
||||
|
@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
|
||||
from .exception import TabFieldError
|
||||
from .queryupdater import QueryResultsUpdater
|
||||
from .workspace import load_checkboxes, load_lineedits, load_listviews, load_textedits, \
|
||||
save_checkboxes, save_lineedits, save_listviews, save_textedits
|
||||
save_checkboxes, save_lineedits, save_listviews, save_textedits
|
||||
|
||||
|
||||
class MLSRuleQueryTab(AnalysisTab):
|
||||
|
@ -30,7 +30,7 @@ from .analysistab import AnalysisTab
|
||||
from .exception import TabFieldError
|
||||
from .queryupdater import QueryResultsUpdater
|
||||
from .workspace import load_checkboxes, load_lineedits, load_textedits, \
|
||||
save_checkboxes, save_lineedits, save_textedits
|
||||
save_checkboxes, save_lineedits, save_textedits
|
||||
|
||||
|
||||
class NetifconQueryTab(AnalysisTab):
|
||||
|
@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
|
||||
from .exception import TabFieldError
|
||||
from .queryupdater import QueryResultsUpdater
|
||||
from .workspace import load_checkboxes, load_lineedits, load_textedits, load_comboboxes, \
|
||||
save_checkboxes, save_lineedits, save_textedits, save_comboboxes
|
||||
save_checkboxes, save_lineedits, save_textedits, save_comboboxes
|
||||
|
||||
|
||||
class NodeconQueryTab(AnalysisTab):
|
||||
|
@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
|
||||
from .exception import TabFieldError
|
||||
from .queryupdater import QueryResultsUpdater
|
||||
from .workspace import load_checkboxes, load_lineedits, load_listviews, load_textedits, \
|
||||
save_checkboxes, save_lineedits, save_listviews, save_textedits
|
||||
save_checkboxes, save_lineedits, save_listviews, save_textedits
|
||||
|
||||
|
||||
class ObjClassQueryTab(AnalysisTab):
|
||||
|
@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
|
||||
from .exception import TabFieldError
|
||||
from .queryupdater import QueryResultsUpdater
|
||||
from .workspace import load_checkboxes, load_lineedits, load_textedits, load_comboboxes, \
|
||||
save_checkboxes, save_lineedits, save_textedits, save_comboboxes
|
||||
save_checkboxes, save_lineedits, save_textedits, save_comboboxes
|
||||
|
||||
|
||||
class PortconQueryTab(AnalysisTab):
|
||||
|
@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
|
||||
from .exception import TabFieldError
|
||||
from .queryupdater import QueryResultsUpdater
|
||||
from .workspace import load_checkboxes, load_lineedits, load_listviews, load_textedits, \
|
||||
save_checkboxes, save_lineedits, save_listviews, save_textedits
|
||||
save_checkboxes, save_lineedits, save_listviews, save_textedits
|
||||
|
||||
|
||||
class RBACRuleQueryTab(AnalysisTab):
|
||||
|
@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
|
||||
from .exception import TabFieldError
|
||||
from .queryupdater import QueryResultsUpdater
|
||||
from .workspace import load_checkboxes, load_lineedits, load_listviews, load_textedits, \
|
||||
save_checkboxes, save_lineedits, save_listviews, save_textedits
|
||||
save_checkboxes, save_lineedits, save_listviews, save_textedits
|
||||
|
||||
|
||||
class RoleQueryTab(AnalysisTab):
|
||||
|
@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
|
||||
from .exception import TabFieldError
|
||||
from .queryupdater import QueryResultsUpdater
|
||||
from .workspace import load_checkboxes, load_lineedits, load_textedits, \
|
||||
save_checkboxes, save_lineedits, save_textedits
|
||||
save_checkboxes, save_lineedits, save_textedits
|
||||
|
||||
|
||||
class SensitivityQueryTab(AnalysisTab):
|
||||
|
@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
|
||||
from .exception import TabFieldError
|
||||
from .queryupdater import QueryResultsUpdater
|
||||
from .workspace import load_checkboxes, load_lineedits, load_listviews, load_textedits, \
|
||||
save_checkboxes, save_lineedits, save_listviews, save_textedits
|
||||
save_checkboxes, save_lineedits, save_listviews, save_textedits
|
||||
|
||||
|
||||
class TERuleQueryTab(AnalysisTab):
|
||||
|
@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
|
||||
from .exception import TabFieldError
|
||||
from .queryupdater import QueryResultsUpdater
|
||||
from .workspace import load_checkboxes, load_lineedits, load_listviews, load_textedits, \
|
||||
save_checkboxes, save_lineedits, save_listviews, save_textedits
|
||||
save_checkboxes, save_lineedits, save_listviews, save_textedits
|
||||
|
||||
|
||||
class TypeAttributeQueryTab(AnalysisTab):
|
||||
|
@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
|
||||
from .exception import TabFieldError
|
||||
from .queryupdater import QueryResultsUpdater
|
||||
from .workspace import load_checkboxes, load_lineedits, load_listviews, load_textedits, \
|
||||
save_checkboxes, save_lineedits, save_listviews, save_textedits
|
||||
save_checkboxes, save_lineedits, save_listviews, save_textedits
|
||||
|
||||
|
||||
class TypeQueryTab(AnalysisTab):
|
||||
|
@ -31,7 +31,7 @@ from .analysistab import AnalysisTab
|
||||
from .exception import TabFieldError
|
||||
from .queryupdater import QueryResultsUpdater
|
||||
from .workspace import load_checkboxes, load_lineedits, load_listviews, load_textedits, \
|
||||
save_checkboxes, save_lineedits, save_listviews, save_textedits
|
||||
save_checkboxes, save_lineedits, save_listviews, save_textedits
|
||||
|
||||
|
||||
class UserQueryTab(AnalysisTab):
|
||||
|
@ -20,7 +20,7 @@ import logging
|
||||
from contextlib import suppress
|
||||
|
||||
from PyQt5.QtCore import QAbstractListModel, QItemSelectionModel, QAbstractTableModel, \
|
||||
QModelIndex, QStringListModel, Qt
|
||||
QModelIndex, QStringListModel, Qt
|
||||
from setools.exception import NoCommon
|
||||
|
||||
|
||||
|
@ -19,7 +19,7 @@
|
||||
from PyQt5.QtCore import Qt, QModelIndex
|
||||
from PyQt5.QtGui import QKeySequence, QCursor
|
||||
from PyQt5.QtWidgets import QAction, QApplication, QFileDialog, QMenu, QTreeWidget, \
|
||||
QTreeWidgetItemIterator
|
||||
QTreeWidgetItemIterator
|
||||
|
||||
|
||||
class SEToolsTreeWidget(QTreeWidget):
|
||||
@ -56,10 +56,10 @@ class SEToolsTreeWidget(QTreeWidget):
|
||||
parent = parent.parent()
|
||||
|
||||
if depth < prev_depth:
|
||||
items.extend([" |"*depth, "\n"])
|
||||
items.extend([" |" * depth, "\n"])
|
||||
|
||||
if depth:
|
||||
items.extend([" |"*depth, "--", item.text(0), "\n"])
|
||||
items.extend([" |" * depth, "--", item.text(0), "\n"])
|
||||
else:
|
||||
items.extend([item.text(0), "\n"])
|
||||
|
||||
|
@ -37,19 +37,19 @@ def user_detail(parent, user):
|
||||
roles = sorted(user.roles)
|
||||
detail.append_header("Roles ({0}):".format(len(roles)))
|
||||
|
||||
for r in roles:
|
||||
detail.append(" {0}".format(r))
|
||||
for role in roles:
|
||||
detail.append(" {0}".format(role))
|
||||
|
||||
try:
|
||||
l = user.mls_level
|
||||
r = user.mls_range
|
||||
level = user.mls_level
|
||||
range_ = user.mls_range
|
||||
except MLSDisabled:
|
||||
pass
|
||||
else:
|
||||
detail.append_header("\nDefault MLS Level:")
|
||||
detail.append(" {0}".format(l))
|
||||
detail.append(" {0}".format(level))
|
||||
detail.append_header("\nMLS Range:")
|
||||
detail.append(" {0}".format(r))
|
||||
detail.append(" {0}".format(range_))
|
||||
|
||||
detail.show()
|
||||
|
||||
|
338
tests/diff.py
338
tests/diff.py
@ -284,11 +284,11 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
|
||||
def test_modified_allow_rules(self):
|
||||
"""Diff: modified allow rules."""
|
||||
l = sorted(self.diff.modified_allows, key=lambda x: x.rule)
|
||||
self.assertEqual(3, len(l))
|
||||
lst = sorted(self.diff.modified_allows, key=lambda x: x.rule)
|
||||
self.assertEqual(3, len(lst))
|
||||
|
||||
# add permissions
|
||||
rule, added_perms, removed_perms, matched_perms = l[0]
|
||||
rule, added_perms, removed_perms, matched_perms = lst[0]
|
||||
self.assertEqual(TRT.allow, rule.ruletype)
|
||||
self.assertEqual("modified_rule_add_perms", rule.source)
|
||||
self.assertEqual("modified_rule_add_perms", rule.target)
|
||||
@ -298,7 +298,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
self.assertSetEqual(set(["hi_r"]), matched_perms)
|
||||
|
||||
# add and remove permissions
|
||||
rule, added_perms, removed_perms, matched_perms = l[1]
|
||||
rule, added_perms, removed_perms, matched_perms = lst[1]
|
||||
self.assertEqual(TRT.allow, rule.ruletype)
|
||||
self.assertEqual("modified_rule_add_remove_perms", rule.source)
|
||||
self.assertEqual("modified_rule_add_remove_perms", rule.target)
|
||||
@ -308,7 +308,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
self.assertSetEqual(set(["low_w"]), matched_perms)
|
||||
|
||||
# remove permissions
|
||||
rule, added_perms, removed_perms, matched_perms = l[2]
|
||||
rule, added_perms, removed_perms, matched_perms = lst[2]
|
||||
self.assertEqual(TRT.allow, rule.ruletype)
|
||||
self.assertEqual("modified_rule_remove_perms", rule.source)
|
||||
self.assertEqual("modified_rule_remove_perms", rule.target)
|
||||
@ -372,11 +372,11 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
|
||||
def test_modified_auditallow_rules(self):
|
||||
"""Diff: modified auditallow rules."""
|
||||
l = sorted(self.diff.modified_auditallows, key=lambda x: x.rule)
|
||||
self.assertEqual(3, len(l))
|
||||
lst = sorted(self.diff.modified_auditallows, key=lambda x: x.rule)
|
||||
self.assertEqual(3, len(lst))
|
||||
|
||||
# add permissions
|
||||
rule, added_perms, removed_perms, matched_perms = l[0]
|
||||
rule, added_perms, removed_perms, matched_perms = lst[0]
|
||||
self.assertEqual(TRT.auditallow, rule.ruletype)
|
||||
self.assertEqual("aa_modified_rule_add_perms", rule.source)
|
||||
self.assertEqual("aa_modified_rule_add_perms", rule.target)
|
||||
@ -386,7 +386,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
self.assertSetEqual(set(["hi_r"]), matched_perms)
|
||||
|
||||
# add and remove permissions
|
||||
rule, added_perms, removed_perms, matched_perms = l[1]
|
||||
rule, added_perms, removed_perms, matched_perms = lst[1]
|
||||
self.assertEqual(TRT.auditallow, rule.ruletype)
|
||||
self.assertEqual("aa_modified_rule_add_remove_perms", rule.source)
|
||||
self.assertEqual("aa_modified_rule_add_remove_perms", rule.target)
|
||||
@ -396,7 +396,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
self.assertSetEqual(set(["low_w"]), matched_perms)
|
||||
|
||||
# remove permissions
|
||||
rule, added_perms, removed_perms, matched_perms = l[2]
|
||||
rule, added_perms, removed_perms, matched_perms = lst[2]
|
||||
self.assertEqual(TRT.auditallow, rule.ruletype)
|
||||
self.assertEqual("aa_modified_rule_remove_perms", rule.source)
|
||||
self.assertEqual("aa_modified_rule_remove_perms", rule.target)
|
||||
@ -460,11 +460,11 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
|
||||
def test_modified_dontaudit_rules(self):
|
||||
"""Diff: modified dontaudit rules."""
|
||||
l = sorted(self.diff.modified_dontaudits, key=lambda x: x.rule)
|
||||
self.assertEqual(3, len(l))
|
||||
lst = sorted(self.diff.modified_dontaudits, key=lambda x: x.rule)
|
||||
self.assertEqual(3, len(lst))
|
||||
|
||||
# add permissions
|
||||
rule, added_perms, removed_perms, matched_perms = l[0]
|
||||
rule, added_perms, removed_perms, matched_perms = lst[0]
|
||||
self.assertEqual(TRT.dontaudit, rule.ruletype)
|
||||
self.assertEqual("da_modified_rule_add_perms", rule.source)
|
||||
self.assertEqual("da_modified_rule_add_perms", rule.target)
|
||||
@ -474,7 +474,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
self.assertSetEqual(set(["hi_r"]), matched_perms)
|
||||
|
||||
# add and remove permissions
|
||||
rule, added_perms, removed_perms, matched_perms = l[1]
|
||||
rule, added_perms, removed_perms, matched_perms = lst[1]
|
||||
self.assertEqual(TRT.dontaudit, rule.ruletype)
|
||||
self.assertEqual("da_modified_rule_add_remove_perms", rule.source)
|
||||
self.assertEqual("da_modified_rule_add_remove_perms", rule.target)
|
||||
@ -484,7 +484,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
self.assertSetEqual(set(["low_w"]), matched_perms)
|
||||
|
||||
# remove permissions
|
||||
rule, added_perms, removed_perms, matched_perms = l[2]
|
||||
rule, added_perms, removed_perms, matched_perms = lst[2]
|
||||
self.assertEqual(TRT.dontaudit, rule.ruletype)
|
||||
self.assertEqual("da_modified_rule_remove_perms", rule.source)
|
||||
self.assertEqual("da_modified_rule_remove_perms", rule.target)
|
||||
@ -619,10 +619,10 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
|
||||
def test_modified_type_transition_rules(self):
|
||||
"""Diff: modified type_transition rules."""
|
||||
l = sorted(self.diff.modified_type_transitions, key=lambda x: x.rule)
|
||||
self.assertEqual(1, len(l))
|
||||
lst = sorted(self.diff.modified_type_transitions, key=lambda x: x.rule)
|
||||
self.assertEqual(1, len(lst))
|
||||
|
||||
rule, added_default, removed_default = l[0]
|
||||
rule, added_default, removed_default = lst[0]
|
||||
self.assertEqual(TRT.type_transition, rule.ruletype)
|
||||
self.assertEqual("tt_matched_source", rule.source)
|
||||
self.assertEqual("system", rule.target)
|
||||
@ -685,10 +685,10 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
|
||||
def test_modified_type_change_rules(self):
|
||||
"""Diff: modified type_change rules."""
|
||||
l = sorted(self.diff.modified_type_changes, key=lambda x: x.rule)
|
||||
self.assertEqual(1, len(l))
|
||||
lst = sorted(self.diff.modified_type_changes, key=lambda x: x.rule)
|
||||
self.assertEqual(1, len(lst))
|
||||
|
||||
rule, added_default, removed_default = l[0]
|
||||
rule, added_default, removed_default = lst[0]
|
||||
self.assertEqual(TRT.type_change, rule.ruletype)
|
||||
self.assertEqual("tc_matched_source", rule.source)
|
||||
self.assertEqual("system", rule.target)
|
||||
@ -751,10 +751,10 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
|
||||
def test_modified_type_member_rules(self):
|
||||
"""Diff: modified type_member rules."""
|
||||
l = sorted(self.diff.modified_type_members, key=lambda x: x.rule)
|
||||
self.assertEqual(1, len(l))
|
||||
lst = sorted(self.diff.modified_type_members, key=lambda x: x.rule)
|
||||
self.assertEqual(1, len(lst))
|
||||
|
||||
rule, added_default, removed_default = l[0]
|
||||
rule, added_default, removed_default = lst[0]
|
||||
self.assertEqual(TRT.type_member, rule.ruletype)
|
||||
self.assertEqual("tm_matched_source", rule.source)
|
||||
self.assertEqual("system", rule.target)
|
||||
@ -793,10 +793,10 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
|
||||
def test_modified_range_transition_rules(self):
|
||||
"""Diff: modified range_transition rules."""
|
||||
l = sorted(self.diff.modified_range_transitions, key=lambda x: x.rule)
|
||||
self.assertEqual(1, len(l))
|
||||
lst = sorted(self.diff.modified_range_transitions, key=lambda x: x.rule)
|
||||
self.assertEqual(1, len(lst))
|
||||
|
||||
rule, added_default, removed_default = l[0]
|
||||
rule, added_default, removed_default = lst[0]
|
||||
self.assertEqual(MRT.range_transition, rule.ruletype)
|
||||
self.assertEqual("rt_matched_source", rule.source)
|
||||
self.assertEqual("system", rule.target)
|
||||
@ -868,10 +868,10 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
|
||||
def test_modified_role_transition_rules(self):
|
||||
"""Diff: modified role_transition rules."""
|
||||
l = sorted(self.diff.modified_role_transitions, key=lambda x: x.rule)
|
||||
self.assertEqual(1, len(l))
|
||||
lst = sorted(self.diff.modified_role_transitions, key=lambda x: x.rule)
|
||||
self.assertEqual(1, len(lst))
|
||||
|
||||
rule, added_default, removed_default = l[0]
|
||||
rule, added_default, removed_default = lst[0]
|
||||
self.assertEqual(RRT.role_transition, rule.ruletype)
|
||||
self.assertEqual("role_tr_matched_source", rule.source)
|
||||
self.assertEqual("role_tr_matched_target", rule.target)
|
||||
@ -1025,30 +1025,30 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
#
|
||||
def test_added_fs_uses(self):
|
||||
"""Diff: added fs_uses."""
|
||||
l = sorted(self.diff.added_fs_uses)
|
||||
self.assertEqual(1, len(l))
|
||||
lst = sorted(self.diff.added_fs_uses)
|
||||
self.assertEqual(1, len(lst))
|
||||
|
||||
rule = l[0]
|
||||
rule = lst[0]
|
||||
self.assertEqual(FSURT.fs_use_xattr, rule.ruletype)
|
||||
self.assertEqual("added_fsuse", rule.fs)
|
||||
self.assertEqual("system:object_r:system:s0", rule.context)
|
||||
|
||||
def test_removed_fs_uses(self):
|
||||
"""Diff: removed fs_uses."""
|
||||
l = sorted(self.diff.removed_fs_uses)
|
||||
self.assertEqual(1, len(l))
|
||||
lst = sorted(self.diff.removed_fs_uses)
|
||||
self.assertEqual(1, len(lst))
|
||||
|
||||
rule = l[0]
|
||||
rule = lst[0]
|
||||
self.assertEqual(FSURT.fs_use_task, rule.ruletype)
|
||||
self.assertEqual("removed_fsuse", rule.fs)
|
||||
self.assertEqual("system:object_r:system:s0", rule.context)
|
||||
|
||||
def test_modified_fs_uses(self):
|
||||
"""Diff: modified fs_uses."""
|
||||
l = sorted(self.diff.modified_fs_uses, key=lambda x: x.rule)
|
||||
self.assertEqual(1, len(l))
|
||||
lst = sorted(self.diff.modified_fs_uses, key=lambda x: x.rule)
|
||||
self.assertEqual(1, len(lst))
|
||||
|
||||
rule, added_context, removed_context = l[0]
|
||||
rule, added_context, removed_context = lst[0]
|
||||
self.assertEqual(FSURT.fs_use_trans, rule.ruletype)
|
||||
self.assertEqual("modified_fsuse", rule.fs)
|
||||
self.assertEqual("added_user:object_r:system:s1", added_context)
|
||||
@ -1059,40 +1059,40 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
#
|
||||
def test_added_genfscons(self):
|
||||
"""Diff: added genfscons."""
|
||||
l = sorted(self.diff.added_genfscons)
|
||||
self.assertEqual(2, len(l))
|
||||
lst = sorted(self.diff.added_genfscons)
|
||||
self.assertEqual(2, len(lst))
|
||||
|
||||
rule = l[0]
|
||||
rule = lst[0]
|
||||
self.assertEqual("added_genfs", rule.fs)
|
||||
self.assertEqual("/", rule.path)
|
||||
self.assertEqual("added_user:object_r:system:s0", rule.context)
|
||||
|
||||
rule = l[1]
|
||||
rule = lst[1]
|
||||
self.assertEqual("change_path", rule.fs)
|
||||
self.assertEqual("/new", rule.path)
|
||||
self.assertEqual("system:object_r:system:s0", rule.context)
|
||||
|
||||
def test_removed_genfscons(self):
|
||||
"""Diff: removed genfscons."""
|
||||
l = sorted(self.diff.removed_genfscons)
|
||||
self.assertEqual(2, len(l))
|
||||
lst = sorted(self.diff.removed_genfscons)
|
||||
self.assertEqual(2, len(lst))
|
||||
|
||||
rule = l[0]
|
||||
rule = lst[0]
|
||||
self.assertEqual("change_path", rule.fs)
|
||||
self.assertEqual("/old", rule.path)
|
||||
self.assertEqual("system:object_r:system:s0", rule.context)
|
||||
|
||||
rule = l[1]
|
||||
rule = lst[1]
|
||||
self.assertEqual("removed_genfs", rule.fs)
|
||||
self.assertEqual("/", rule.path)
|
||||
self.assertEqual("system:object_r:system:s0", rule.context)
|
||||
|
||||
def test_modified_genfscons(self):
|
||||
"""Diff: modified genfscons."""
|
||||
l = sorted(self.diff.modified_genfscons, key=lambda x: x.rule)
|
||||
self.assertEqual(1, len(l))
|
||||
lst = sorted(self.diff.modified_genfscons, key=lambda x: x.rule)
|
||||
self.assertEqual(1, len(lst))
|
||||
|
||||
rule, added_context, removed_context = l[0]
|
||||
rule, added_context, removed_context = lst[0]
|
||||
self.assertEqual("modified_genfs", rule.fs)
|
||||
self.assertEqual("/", rule.path)
|
||||
self.assertEqual("added_user:object_r:system:s0", added_context)
|
||||
@ -1103,27 +1103,27 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
#
|
||||
def test_added_levels(self):
|
||||
"""Diff: added levels."""
|
||||
l = sorted(self.diff.added_levels)
|
||||
self.assertEqual(1, len(l))
|
||||
self.assertEqual("s46:c0.c4", l[0])
|
||||
lst = sorted(self.diff.added_levels)
|
||||
self.assertEqual(1, len(lst))
|
||||
self.assertEqual("s46:c0.c4", lst[0])
|
||||
|
||||
def test_removed_levels(self):
|
||||
"""Diff: removed levels."""
|
||||
l = sorted(self.diff.removed_levels)
|
||||
self.assertEqual(1, len(l))
|
||||
self.assertEqual("s47:c0.c4", l[0])
|
||||
lst = sorted(self.diff.removed_levels)
|
||||
self.assertEqual(1, len(lst))
|
||||
self.assertEqual("s47:c0.c4", lst[0])
|
||||
|
||||
def test_modified_levels(self):
|
||||
"""Diff: modified levels."""
|
||||
l = sorted(self.diff.modified_levels)
|
||||
self.assertEqual(2, len(l))
|
||||
lst = sorted(self.diff.modified_levels)
|
||||
self.assertEqual(2, len(lst))
|
||||
|
||||
level = l[0]
|
||||
level = lst[0]
|
||||
self.assertEqual("s40", level.level.sensitivity)
|
||||
self.assertSetEqual(set(["c3"]), level.added_categories)
|
||||
self.assertFalse(level.removed_categories)
|
||||
|
||||
level = l[1]
|
||||
level = lst[1]
|
||||
self.assertEqual("s41", level.level.sensitivity)
|
||||
self.assertFalse(level.added_categories)
|
||||
self.assertSetEqual(set(["c4"]), level.removed_categories)
|
||||
@ -1133,31 +1133,31 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
#
|
||||
def test_added_netifcons(self):
|
||||
"""Diff: added netifcons."""
|
||||
l = sorted(self.diff.added_netifcons)
|
||||
self.assertEqual(1, len(l))
|
||||
lst = sorted(self.diff.added_netifcons)
|
||||
self.assertEqual(1, len(lst))
|
||||
|
||||
rule = l[0]
|
||||
rule = lst[0]
|
||||
self.assertEqual("added_netif", rule.netif)
|
||||
self.assertEqual("system:object_r:system:s0", rule.context)
|
||||
self.assertEqual("system:object_r:system:s0", rule.packet)
|
||||
|
||||
def test_removed_netifcons(self):
|
||||
"""Diff: removed netifcons."""
|
||||
l = sorted(self.diff.removed_netifcons)
|
||||
self.assertEqual(1, len(l))
|
||||
lst = sorted(self.diff.removed_netifcons)
|
||||
self.assertEqual(1, len(lst))
|
||||
|
||||
rule = l[0]
|
||||
rule = lst[0]
|
||||
self.assertEqual("removed_netif", rule.netif)
|
||||
self.assertEqual("system:object_r:system:s0", rule.context)
|
||||
self.assertEqual("system:object_r:system:s0", rule.packet)
|
||||
|
||||
def test_modified_netifcons(self):
|
||||
"""Diff: modified netifcons."""
|
||||
l = sorted(self.diff.modified_netifcons, key=lambda x: x.rule)
|
||||
self.assertEqual(3, len(l))
|
||||
lst = sorted(self.diff.modified_netifcons, key=lambda x: x.rule)
|
||||
self.assertEqual(3, len(lst))
|
||||
|
||||
# modified both contexts
|
||||
rule, added_context, removed_context, added_packet, removed_packet = l[0]
|
||||
rule, added_context, removed_context, added_packet, removed_packet = lst[0]
|
||||
self.assertEqual("mod_both_netif", rule.netif)
|
||||
self.assertEqual("added_user:object_r:system:s0", added_context)
|
||||
self.assertEqual("removed_user:object_r:system:s0", removed_context)
|
||||
@ -1165,7 +1165,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
self.assertEqual("removed_user:object_r:system:s0", removed_packet)
|
||||
|
||||
# modified context
|
||||
rule, added_context, removed_context, added_packet, removed_packet = l[1]
|
||||
rule, added_context, removed_context, added_packet, removed_packet = lst[1]
|
||||
self.assertEqual("mod_ctx_netif", rule.netif)
|
||||
self.assertEqual("added_user:object_r:system:s0", added_context)
|
||||
self.assertEqual("removed_user:object_r:system:s0", removed_context)
|
||||
@ -1173,7 +1173,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
self.assertIsNone(removed_packet)
|
||||
|
||||
# modified packet context
|
||||
rule, added_context, removed_context, added_packet, removed_packet = l[2]
|
||||
rule, added_context, removed_context, added_packet, removed_packet = lst[2]
|
||||
self.assertEqual("mod_pkt_netif", rule.netif)
|
||||
self.assertIsNone(added_context)
|
||||
self.assertIsNone(removed_context)
|
||||
@ -1185,59 +1185,59 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
#
|
||||
def test_added_nodecons(self):
|
||||
"""Diff: added nodecons."""
|
||||
l = sorted(self.diff.added_nodecons)
|
||||
self.assertEqual(4, len(l))
|
||||
lst = sorted(self.diff.added_nodecons)
|
||||
self.assertEqual(4, len(lst))
|
||||
|
||||
# new IPv4
|
||||
nodecon = l[0]
|
||||
nodecon = lst[0]
|
||||
self.assertEqual(IPv4Network("124.0.0.0/8"), nodecon.network)
|
||||
|
||||
# changed IPv4 netmask
|
||||
nodecon = l[1]
|
||||
nodecon = lst[1]
|
||||
self.assertEqual(IPv4Network("125.0.0.0/16"), nodecon.network)
|
||||
|
||||
# new IPv6
|
||||
nodecon = l[2]
|
||||
nodecon = lst[2]
|
||||
self.assertEqual(IPv6Network("ff04::/62"), nodecon.network)
|
||||
|
||||
# changed IPv6 netmask
|
||||
nodecon = l[3]
|
||||
nodecon = lst[3]
|
||||
self.assertEqual(IPv6Network("ff05::/60"), nodecon.network)
|
||||
|
||||
def test_removed_nodecons(self):
|
||||
"""Diff: removed nodecons."""
|
||||
l = sorted(self.diff.removed_nodecons)
|
||||
self.assertEqual(4, len(l))
|
||||
lst = sorted(self.diff.removed_nodecons)
|
||||
self.assertEqual(4, len(lst))
|
||||
|
||||
# new IPv4
|
||||
nodecon = l[0]
|
||||
nodecon = lst[0]
|
||||
self.assertEqual(IPv4Network("122.0.0.0/8"), nodecon.network)
|
||||
|
||||
# changed IPv4 netmask
|
||||
nodecon = l[1]
|
||||
nodecon = lst[1]
|
||||
self.assertEqual(IPv4Network("125.0.0.0/8"), nodecon.network)
|
||||
|
||||
# new IPv6
|
||||
nodecon = l[2]
|
||||
nodecon = lst[2]
|
||||
self.assertEqual(IPv6Network("ff02::/62"), nodecon.network)
|
||||
|
||||
# changed IPv6 netmask
|
||||
nodecon = l[3]
|
||||
nodecon = lst[3]
|
||||
self.assertEqual(IPv6Network("ff05::/62"), nodecon.network)
|
||||
|
||||
def test_modified_nodecons(self):
|
||||
"""Diff: modified nodecons."""
|
||||
l = sorted(self.diff.modified_nodecons, key=lambda x: x.rule)
|
||||
self.assertEqual(2, len(l))
|
||||
lst = sorted(self.diff.modified_nodecons, key=lambda x: x.rule)
|
||||
self.assertEqual(2, len(lst))
|
||||
|
||||
# changed IPv4
|
||||
nodecon, added_context, removed_context = l[0]
|
||||
nodecon, added_context, removed_context = lst[0]
|
||||
self.assertEqual(IPv4Network("123.0.0.0/8"), nodecon.network)
|
||||
self.assertEqual("modified_change_level:object_r:system:s2:c0", added_context)
|
||||
self.assertEqual("modified_change_level:object_r:system:s2:c1", removed_context)
|
||||
|
||||
# changed IPv6
|
||||
nodecon, added_context, removed_context = l[1]
|
||||
nodecon, added_context, removed_context = lst[1]
|
||||
self.assertEqual(IPv6Network("ff03::/62"), nodecon.network)
|
||||
self.assertEqual("modified_change_level:object_r:system:s2:c1", added_context)
|
||||
self.assertEqual("modified_change_level:object_r:system:s2:c0.c1", removed_context)
|
||||
@ -1258,42 +1258,42 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
#
|
||||
def test_added_portcons(self):
|
||||
"""Diff: added portcons."""
|
||||
l = sorted(self.diff.added_portcons)
|
||||
self.assertEqual(2, len(l))
|
||||
lst = sorted(self.diff.added_portcons)
|
||||
self.assertEqual(2, len(lst))
|
||||
|
||||
portcon = l[0]
|
||||
portcon = lst[0]
|
||||
self.assertEqual(PortconProtocol.tcp, portcon.protocol)
|
||||
self.assertTupleEqual((2024, 2026), portcon.ports)
|
||||
|
||||
portcon = l[1]
|
||||
portcon = lst[1]
|
||||
self.assertEqual(PortconProtocol.udp, portcon.protocol)
|
||||
self.assertTupleEqual((2024, 2024), portcon.ports)
|
||||
|
||||
def test_removed_portcons(self):
|
||||
"""Diff: removed portcons."""
|
||||
l = sorted(self.diff.removed_portcons)
|
||||
self.assertEqual(2, len(l))
|
||||
lst = sorted(self.diff.removed_portcons)
|
||||
self.assertEqual(2, len(lst))
|
||||
|
||||
portcon = l[0]
|
||||
portcon = lst[0]
|
||||
self.assertEqual(PortconProtocol.tcp, portcon.protocol)
|
||||
self.assertTupleEqual((1024, 1026), portcon.ports)
|
||||
|
||||
portcon = l[1]
|
||||
portcon = lst[1]
|
||||
self.assertEqual(PortconProtocol.udp, portcon.protocol)
|
||||
self.assertTupleEqual((1024, 1024), portcon.ports)
|
||||
|
||||
def test_modified_portcons(self):
|
||||
"""Diff: modified portcons."""
|
||||
l = sorted(self.diff.modified_portcons, key=lambda x: x.rule)
|
||||
self.assertEqual(2, len(l))
|
||||
lst = sorted(self.diff.modified_portcons, key=lambda x: x.rule)
|
||||
self.assertEqual(2, len(lst))
|
||||
|
||||
portcon, added_context, removed_context = l[0]
|
||||
portcon, added_context, removed_context = lst[0]
|
||||
self.assertEqual(PortconProtocol.tcp, portcon.protocol)
|
||||
self.assertTupleEqual((3024, 3026), portcon.ports)
|
||||
self.assertEqual("added_user:object_r:system:s1", added_context)
|
||||
self.assertEqual("removed_user:object_r:system:s0", removed_context)
|
||||
|
||||
portcon, added_context, removed_context = l[1]
|
||||
portcon, added_context, removed_context = lst[1]
|
||||
self.assertEqual(PortconProtocol.udp, portcon.protocol)
|
||||
self.assertTupleEqual((3024, 3024), portcon.ports)
|
||||
self.assertEqual("added_user:object_r:system:s1", added_context)
|
||||
@ -1304,36 +1304,36 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
#
|
||||
def test_added_defaults(self):
|
||||
"""Diff: added defaults."""
|
||||
l = sorted(self.diff.added_defaults)
|
||||
self.assertEqual(2, len(l))
|
||||
lst = sorted(self.diff.added_defaults)
|
||||
self.assertEqual(2, len(lst))
|
||||
|
||||
default = l[0]
|
||||
default = lst[0]
|
||||
self.assertEqual(DRT.default_range, default.ruletype)
|
||||
self.assertEqual("infoflow2", default.tclass)
|
||||
|
||||
default = l[1]
|
||||
default = lst[1]
|
||||
self.assertEqual(DRT.default_user, default.ruletype)
|
||||
self.assertEqual("infoflow2", default.tclass)
|
||||
|
||||
def test_removed_defaults(self):
|
||||
"""Diff: removed defaults."""
|
||||
l = sorted(self.diff.removed_defaults)
|
||||
self.assertEqual(2, len(l))
|
||||
lst = sorted(self.diff.removed_defaults)
|
||||
self.assertEqual(2, len(lst))
|
||||
|
||||
default = l[0]
|
||||
default = lst[0]
|
||||
self.assertEqual(DRT.default_range, default.ruletype)
|
||||
self.assertEqual("infoflow3", default.tclass)
|
||||
|
||||
default = l[1]
|
||||
default = lst[1]
|
||||
self.assertEqual(DRT.default_role, default.ruletype)
|
||||
self.assertEqual("infoflow3", default.tclass)
|
||||
|
||||
def test_modified_defaults(self):
|
||||
"""Diff: modified defaults."""
|
||||
l = sorted(self.diff.modified_defaults, key=lambda x: x.rule)
|
||||
self.assertEqual(4, len(l))
|
||||
lst = sorted(self.diff.modified_defaults, key=lambda x: x.rule)
|
||||
self.assertEqual(4, len(lst))
|
||||
|
||||
default, added_default, removed_default, added_range, removed_range = l[0]
|
||||
default, added_default, removed_default, added_range, removed_range = lst[0]
|
||||
self.assertEqual(DRT.default_range, default.ruletype)
|
||||
self.assertEqual("infoflow4", default.tclass)
|
||||
self.assertEqual(DV.target, added_default)
|
||||
@ -1341,7 +1341,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
self.assertIsNone(added_range)
|
||||
self.assertIsNone(removed_range)
|
||||
|
||||
default, added_default, removed_default, added_range, removed_range = l[1]
|
||||
default, added_default, removed_default, added_range, removed_range = lst[1]
|
||||
self.assertEqual(DRT.default_range, default.ruletype)
|
||||
self.assertEqual("infoflow5", default.tclass)
|
||||
self.assertIsNone(added_default)
|
||||
@ -1349,7 +1349,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
self.assertEqual(DRV.high, added_range)
|
||||
self.assertEqual(DRV.low, removed_range)
|
||||
|
||||
default, added_default, removed_default, added_range, removed_range = l[2]
|
||||
default, added_default, removed_default, added_range, removed_range = lst[2]
|
||||
self.assertEqual(DRT.default_range, default.ruletype)
|
||||
self.assertEqual("infoflow6", default.tclass)
|
||||
self.assertEqual(DV.target, added_default)
|
||||
@ -1357,7 +1357,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
self.assertEqual(DRV.low, added_range)
|
||||
self.assertEqual(DRV.high, removed_range)
|
||||
|
||||
default, added_default, removed_default, added_range, removed_range = l[3]
|
||||
default, added_default, removed_default, added_range, removed_range = lst[3]
|
||||
self.assertEqual(DRT.default_type, default.ruletype)
|
||||
self.assertEqual("infoflow4", default.tclass)
|
||||
self.assertEqual(DV.target, added_default)
|
||||
@ -1370,16 +1370,16 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
#
|
||||
def test_added_constrains(self):
|
||||
"""Diff: added constrains."""
|
||||
l = sorted(self.diff.added_constrains)
|
||||
self.assertEqual(2, len(l))
|
||||
lst = sorted(self.diff.added_constrains)
|
||||
self.assertEqual(2, len(lst))
|
||||
|
||||
constrain = l[0]
|
||||
constrain = lst[0]
|
||||
self.assertEqual(CRT.constrain, constrain.ruletype)
|
||||
self.assertEqual("infoflow3", constrain.tclass)
|
||||
self.assertSetEqual(set(["null"]), constrain.perms)
|
||||
self.assertListEqual(["u1", "u2", "!="], constrain.postfix_expression())
|
||||
|
||||
constrain = l[1]
|
||||
constrain = lst[1]
|
||||
self.assertEqual(CRT.constrain, constrain.ruletype)
|
||||
self.assertEqual("infoflow5", constrain.tclass)
|
||||
self.assertSetEqual(set(["hi_r"]), constrain.perms)
|
||||
@ -1389,16 +1389,16 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
|
||||
def test_removed_constrains(self):
|
||||
"""Diff: removed constrains."""
|
||||
l = sorted(self.diff.removed_constrains)
|
||||
self.assertEqual(2, len(l))
|
||||
lst = sorted(self.diff.removed_constrains)
|
||||
self.assertEqual(2, len(lst))
|
||||
|
||||
constrain = l[0]
|
||||
constrain = lst[0]
|
||||
self.assertEqual(CRT.constrain, constrain.ruletype)
|
||||
self.assertEqual("infoflow4", constrain.tclass)
|
||||
self.assertSetEqual(set(["hi_w"]), constrain.perms)
|
||||
self.assertListEqual(["u1", "u2", "!="], constrain.postfix_expression())
|
||||
|
||||
constrain = l[1]
|
||||
constrain = lst[1]
|
||||
self.assertEqual(CRT.constrain, constrain.ruletype)
|
||||
self.assertEqual("infoflow5", constrain.tclass)
|
||||
self.assertSetEqual(set(["hi_r"]), constrain.perms)
|
||||
@ -1411,10 +1411,10 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
#
|
||||
def test_added_mlsconstrains(self):
|
||||
"""Diff: added mlsconstrains."""
|
||||
l = sorted(self.diff.added_mlsconstrains)
|
||||
self.assertEqual(2, len(l))
|
||||
lst = sorted(self.diff.added_mlsconstrains)
|
||||
self.assertEqual(2, len(lst))
|
||||
|
||||
mlsconstrain = l[0]
|
||||
mlsconstrain = lst[0]
|
||||
self.assertEqual(CRT.mlsconstrain, mlsconstrain.ruletype)
|
||||
self.assertEqual("infoflow3", mlsconstrain.tclass)
|
||||
self.assertSetEqual(set(["null"]), mlsconstrain.perms)
|
||||
@ -1423,7 +1423,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
't1', set(["mls_exempt"]), '!=', 'or'],
|
||||
mlsconstrain.postfix_expression())
|
||||
|
||||
mlsconstrain = l[1]
|
||||
mlsconstrain = lst[1]
|
||||
self.assertEqual(CRT.mlsconstrain, mlsconstrain.ruletype)
|
||||
self.assertEqual("infoflow5", mlsconstrain.tclass)
|
||||
self.assertSetEqual(set(["hi_r"]), mlsconstrain.perms)
|
||||
@ -1434,10 +1434,10 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
|
||||
def test_removed_mlsconstrains(self):
|
||||
"""Diff: removed mlsconstrains."""
|
||||
l = sorted(self.diff.removed_mlsconstrains)
|
||||
self.assertEqual(2, len(l))
|
||||
lst = sorted(self.diff.removed_mlsconstrains)
|
||||
self.assertEqual(2, len(lst))
|
||||
|
||||
mlsconstrain = l[0]
|
||||
mlsconstrain = lst[0]
|
||||
self.assertEqual(CRT.mlsconstrain, mlsconstrain.ruletype)
|
||||
self.assertEqual("infoflow4", mlsconstrain.tclass)
|
||||
self.assertSetEqual(set(["hi_w"]), mlsconstrain.perms)
|
||||
@ -1446,7 +1446,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
't1', set(["mls_exempt"]), '==', 'or'],
|
||||
mlsconstrain.postfix_expression())
|
||||
|
||||
mlsconstrain = l[1]
|
||||
mlsconstrain = lst[1]
|
||||
self.assertEqual(CRT.mlsconstrain, mlsconstrain.ruletype)
|
||||
self.assertEqual("infoflow5", mlsconstrain.tclass)
|
||||
self.assertSetEqual(set(["hi_r"]), mlsconstrain.perms)
|
||||
@ -1459,17 +1459,17 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
#
|
||||
def test_added_validatetrans(self):
|
||||
"""Diff: added validatetrans."""
|
||||
l = sorted(self.diff.added_validatetrans)
|
||||
self.assertEqual(2, len(l))
|
||||
lst = sorted(self.diff.added_validatetrans)
|
||||
self.assertEqual(2, len(lst))
|
||||
|
||||
validatetrans = l[0]
|
||||
validatetrans = lst[0]
|
||||
self.assertEqual(CRT.validatetrans, validatetrans.ruletype)
|
||||
self.assertEqual("infoflow3", validatetrans.tclass)
|
||||
self.assertListEqual(
|
||||
['t1', 't2', '==', 't3', set(["system"]), '==', 'or'],
|
||||
validatetrans.postfix_expression())
|
||||
|
||||
validatetrans = l[1]
|
||||
validatetrans = lst[1]
|
||||
self.assertEqual(CRT.validatetrans, validatetrans.ruletype)
|
||||
self.assertEqual("infoflow5", validatetrans.tclass)
|
||||
self.assertListEqual(
|
||||
@ -1478,17 +1478,17 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
|
||||
def test_removed_validatetrans(self):
|
||||
"""Diff: removed validatetrans."""
|
||||
l = sorted(self.diff.removed_validatetrans)
|
||||
self.assertEqual(2, len(l))
|
||||
lst = sorted(self.diff.removed_validatetrans)
|
||||
self.assertEqual(2, len(lst))
|
||||
|
||||
validatetrans = l[0]
|
||||
validatetrans = lst[0]
|
||||
self.assertEqual(CRT.validatetrans, validatetrans.ruletype)
|
||||
self.assertEqual("infoflow4", validatetrans.tclass)
|
||||
self.assertListEqual(
|
||||
['u1', 'u2', '==', 't3', set(["system"]), '==', 'or'],
|
||||
validatetrans.postfix_expression())
|
||||
|
||||
validatetrans = l[1]
|
||||
validatetrans = lst[1]
|
||||
self.assertEqual(CRT.validatetrans, validatetrans.ruletype)
|
||||
self.assertEqual("infoflow5", validatetrans.tclass)
|
||||
self.assertListEqual(
|
||||
@ -1500,17 +1500,17 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
#
|
||||
def test_added_mlsvalidatetrans(self):
|
||||
"""Diff: added mlsvalidatetrans."""
|
||||
l = sorted(self.diff.added_mlsvalidatetrans)
|
||||
self.assertEqual(2, len(l))
|
||||
lst = sorted(self.diff.added_mlsvalidatetrans)
|
||||
self.assertEqual(2, len(lst))
|
||||
|
||||
mlsvalidatetrans = l[0]
|
||||
mlsvalidatetrans = lst[0]
|
||||
self.assertEqual(CRT.mlsvalidatetrans, mlsvalidatetrans.ruletype)
|
||||
self.assertEqual("infoflow3", mlsvalidatetrans.tclass)
|
||||
self.assertListEqual(
|
||||
['l1', 'l2', '==', 'h1', 'h2', '==', 'and', 't3', set(["mls_exempt"]), '==', 'or'],
|
||||
mlsvalidatetrans.postfix_expression())
|
||||
|
||||
mlsvalidatetrans = l[1]
|
||||
mlsvalidatetrans = lst[1]
|
||||
self.assertEqual(CRT.mlsvalidatetrans, mlsvalidatetrans.ruletype)
|
||||
self.assertEqual("infoflow5", mlsvalidatetrans.tclass)
|
||||
self.assertListEqual(
|
||||
@ -1520,17 +1520,17 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
|
||||
def test_removed_mlsvalidatetrans(self):
|
||||
"""Diff: removed mlsvalidatetrans."""
|
||||
l = sorted(self.diff.removed_mlsvalidatetrans)
|
||||
self.assertEqual(2, len(l))
|
||||
lst = sorted(self.diff.removed_mlsvalidatetrans)
|
||||
self.assertEqual(2, len(lst))
|
||||
|
||||
mlsvalidatetrans = l[0]
|
||||
mlsvalidatetrans = lst[0]
|
||||
self.assertEqual(CRT.mlsvalidatetrans, mlsvalidatetrans.ruletype)
|
||||
self.assertEqual("infoflow4", mlsvalidatetrans.tclass)
|
||||
self.assertListEqual(
|
||||
['l1', 'l2', '==', 'h1', 'h2', '==', 'and', 't3', set(["mls_exempt"]), '==', 'or'],
|
||||
mlsvalidatetrans.postfix_expression())
|
||||
|
||||
mlsvalidatetrans = l[1]
|
||||
mlsvalidatetrans = lst[1]
|
||||
self.assertEqual(CRT.mlsvalidatetrans, mlsvalidatetrans.ruletype)
|
||||
self.assertEqual("infoflow5", mlsvalidatetrans.tclass)
|
||||
self.assertListEqual(
|
||||
@ -1542,30 +1542,30 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
#
|
||||
def test_added_typebounds(self):
|
||||
"""Diff: added typebounds."""
|
||||
l = sorted(self.diff.added_typebounds)
|
||||
self.assertEqual(1, len(l))
|
||||
lst = sorted(self.diff.added_typebounds)
|
||||
self.assertEqual(1, len(lst))
|
||||
|
||||
bounds = l[0]
|
||||
bounds = lst[0]
|
||||
self.assertEqual(BRT.typebounds, bounds.ruletype)
|
||||
self.assertEqual("added_parent", bounds.parent)
|
||||
self.assertEqual("added_child", bounds.child)
|
||||
|
||||
def test_removed_typebounds(self):
|
||||
"""Diff: removed typebounds."""
|
||||
l = sorted(self.diff.removed_typebounds)
|
||||
self.assertEqual(1, len(l))
|
||||
lst = sorted(self.diff.removed_typebounds)
|
||||
self.assertEqual(1, len(lst))
|
||||
|
||||
bounds = l[0]
|
||||
bounds = lst[0]
|
||||
self.assertEqual(BRT.typebounds, bounds.ruletype)
|
||||
self.assertEqual("removed_parent", bounds.parent)
|
||||
self.assertEqual("removed_child", bounds.child)
|
||||
|
||||
def test_modified_typebounds(self):
|
||||
"""Diff: modified typebounds."""
|
||||
l = sorted(self.diff.modified_typebounds, key=lambda x: x.rule)
|
||||
self.assertEqual(1, len(l))
|
||||
lst = sorted(self.diff.modified_typebounds, key=lambda x: x.rule)
|
||||
self.assertEqual(1, len(lst))
|
||||
|
||||
bounds, added_bound, removed_bound = l[0]
|
||||
bounds, added_bound, removed_bound = lst[0]
|
||||
self.assertEqual(BRT.typebounds, bounds.ruletype)
|
||||
self.assertEqual("mod_child", bounds.child)
|
||||
self.assertEqual("mod_parent_added", added_bound)
|
||||
@ -1602,11 +1602,11 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
|
||||
def test_modified_allowxperm_rules(self):
|
||||
"""Diff: modified allowxperm rules."""
|
||||
l = sorted(self.diff.modified_allowxperms, key=lambda x: x.rule)
|
||||
self.assertEqual(3, len(l))
|
||||
lst = sorted(self.diff.modified_allowxperms, key=lambda x: x.rule)
|
||||
self.assertEqual(3, len(lst))
|
||||
|
||||
# add permissions
|
||||
rule, added_perms, removed_perms, matched_perms = l[0]
|
||||
rule, added_perms, removed_perms, matched_perms = lst[0]
|
||||
self.assertEqual(TRT.allowxperm, rule.ruletype)
|
||||
self.assertEqual("ax_modified_rule_add_perms", rule.source)
|
||||
self.assertEqual("ax_modified_rule_add_perms", rule.target)
|
||||
@ -1616,7 +1616,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
self.assertSetEqual(set([0x0004]), matched_perms)
|
||||
|
||||
# add and remove permissions
|
||||
rule, added_perms, removed_perms, matched_perms = l[1]
|
||||
rule, added_perms, removed_perms, matched_perms = lst[1]
|
||||
self.assertEqual(TRT.allowxperm, rule.ruletype)
|
||||
self.assertEqual("ax_modified_rule_add_remove_perms", rule.source)
|
||||
self.assertEqual("ax_modified_rule_add_remove_perms", rule.target)
|
||||
@ -1626,7 +1626,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
self.assertSetEqual(set([0x0008]), matched_perms)
|
||||
|
||||
# remove permissions
|
||||
rule, added_perms, removed_perms, matched_perms = l[2]
|
||||
rule, added_perms, removed_perms, matched_perms = lst[2]
|
||||
self.assertEqual(TRT.allowxperm, rule.ruletype)
|
||||
self.assertEqual("ax_modified_rule_remove_perms", rule.source)
|
||||
self.assertEqual("ax_modified_rule_remove_perms", rule.target)
|
||||
@ -1666,11 +1666,11 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
|
||||
def test_modified_auditallowxperm_rules(self):
|
||||
"""Diff: modified auditallowxperm rules."""
|
||||
l = sorted(self.diff.modified_auditallowxperms, key=lambda x: x.rule)
|
||||
self.assertEqual(3, len(l))
|
||||
lst = sorted(self.diff.modified_auditallowxperms, key=lambda x: x.rule)
|
||||
self.assertEqual(3, len(lst))
|
||||
|
||||
# add permissions
|
||||
rule, added_perms, removed_perms, matched_perms = l[0]
|
||||
rule, added_perms, removed_perms, matched_perms = lst[0]
|
||||
self.assertEqual(TRT.auditallowxperm, rule.ruletype)
|
||||
self.assertEqual("aax_modified_rule_add_perms", rule.source)
|
||||
self.assertEqual("aax_modified_rule_add_perms", rule.target)
|
||||
@ -1680,7 +1680,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
self.assertSetEqual(set([0x0004]), matched_perms)
|
||||
|
||||
# add and remove permissions
|
||||
rule, added_perms, removed_perms, matched_perms = l[1]
|
||||
rule, added_perms, removed_perms, matched_perms = lst[1]
|
||||
self.assertEqual(TRT.auditallowxperm, rule.ruletype)
|
||||
self.assertEqual("aax_modified_rule_add_remove_perms", rule.source)
|
||||
self.assertEqual("aax_modified_rule_add_remove_perms", rule.target)
|
||||
@ -1690,7 +1690,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
self.assertSetEqual(set([0x0008]), matched_perms)
|
||||
|
||||
# remove permissions
|
||||
rule, added_perms, removed_perms, matched_perms = l[2]
|
||||
rule, added_perms, removed_perms, matched_perms = lst[2]
|
||||
self.assertEqual(TRT.auditallowxperm, rule.ruletype)
|
||||
self.assertEqual("aax_modified_rule_remove_perms", rule.source)
|
||||
self.assertEqual("aax_modified_rule_remove_perms", rule.target)
|
||||
@ -1800,11 +1800,11 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
|
||||
def test_modified_dontauditxperm_rules(self):
|
||||
"""Diff: modified dontauditxperm rules."""
|
||||
l = sorted(self.diff.modified_dontauditxperms, key=lambda x: x.rule)
|
||||
self.assertEqual(3, len(l))
|
||||
lst = sorted(self.diff.modified_dontauditxperms, key=lambda x: x.rule)
|
||||
self.assertEqual(3, len(lst))
|
||||
|
||||
# add permissions
|
||||
rule, added_perms, removed_perms, matched_perms = l[0]
|
||||
rule, added_perms, removed_perms, matched_perms = lst[0]
|
||||
self.assertEqual(TRT.dontauditxperm, rule.ruletype)
|
||||
self.assertEqual("dax_modified_rule_add_perms", rule.source)
|
||||
self.assertEqual("dax_modified_rule_add_perms", rule.target)
|
||||
@ -1814,7 +1814,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
self.assertSetEqual(set([0x0004]), matched_perms)
|
||||
|
||||
# add and remove permissions
|
||||
rule, added_perms, removed_perms, matched_perms = l[1]
|
||||
rule, added_perms, removed_perms, matched_perms = lst[1]
|
||||
self.assertEqual(TRT.dontauditxperm, rule.ruletype)
|
||||
self.assertEqual("dax_modified_rule_add_remove_perms", rule.source)
|
||||
self.assertEqual("dax_modified_rule_add_remove_perms", rule.target)
|
||||
@ -1824,7 +1824,7 @@ class PolicyDifferenceTest(ValidateRule, unittest.TestCase):
|
||||
self.assertSetEqual(set([0x0008]), matched_perms)
|
||||
|
||||
# remove permissions
|
||||
rule, added_perms, removed_perms, matched_perms = l[2]
|
||||
rule, added_perms, removed_perms, matched_perms = lst[2]
|
||||
self.assertEqual(TRT.dontauditxperm, rule.ruletype)
|
||||
self.assertEqual("dax_modified_rule_remove_perms", rule.source)
|
||||
self.assertEqual("dax_modified_rule_remove_perms", rule.target)
|
||||
|
12
tests/dta.py
12
tests/dta.py
@ -512,7 +512,7 @@ class DomainTransitionAnalysisTest(mixins.ValidateRule, unittest.TestCase):
|
||||
self.assertIsInstance(step.source, Type)
|
||||
self.assertIsInstance(step.target, Type)
|
||||
self.assertEqual(expected_path[stepnum], step.source)
|
||||
self.assertEqual(expected_path[stepnum+1], step.target)
|
||||
self.assertEqual(expected_path[stepnum + 1], step.target)
|
||||
|
||||
for r in step.transition:
|
||||
self.assertIn("transition", r.perms)
|
||||
@ -553,7 +553,7 @@ class DomainTransitionAnalysisTest(mixins.ValidateRule, unittest.TestCase):
|
||||
self.assertIsInstance(step.source, Type)
|
||||
self.assertIsInstance(step.target, Type)
|
||||
self.assertEqual(expected_path[stepnum], step.source)
|
||||
self.assertEqual(expected_path[stepnum+1], step.target)
|
||||
self.assertEqual(expected_path[stepnum + 1], step.target)
|
||||
|
||||
for r in step.transition:
|
||||
self.assertIn("transition", r.perms)
|
||||
@ -594,7 +594,7 @@ class DomainTransitionAnalysisTest(mixins.ValidateRule, unittest.TestCase):
|
||||
self.assertIsInstance(step.source, Type)
|
||||
self.assertIsInstance(step.target, Type)
|
||||
self.assertEqual(expected_path[stepnum], step.source)
|
||||
self.assertEqual(expected_path[stepnum+1], step.target)
|
||||
self.assertEqual(expected_path[stepnum + 1], step.target)
|
||||
|
||||
for r in step.transition:
|
||||
self.assertIn("transition", r.perms)
|
||||
@ -671,7 +671,7 @@ class DomainTransitionAnalysisTest(mixins.ValidateRule, unittest.TestCase):
|
||||
for stepnum, step in enumerate(path):
|
||||
self.assertIsInstance(step.source, Type)
|
||||
self.assertIsInstance(step.target, Type)
|
||||
self.assertEqual(step.source, expected_path[stepnum+1])
|
||||
self.assertEqual(step.source, expected_path[stepnum + 1])
|
||||
self.assertEqual(step.target, expected_path[stepnum])
|
||||
|
||||
for r in step.transition:
|
||||
@ -712,7 +712,7 @@ class DomainTransitionAnalysisTest(mixins.ValidateRule, unittest.TestCase):
|
||||
for stepnum, step in enumerate(path):
|
||||
self.assertIsInstance(step.source, Type)
|
||||
self.assertIsInstance(step.target, Type)
|
||||
self.assertEqual(step.source, expected_path[stepnum+1])
|
||||
self.assertEqual(step.source, expected_path[stepnum + 1])
|
||||
self.assertEqual(step.target, expected_path[stepnum])
|
||||
|
||||
for r in step.transition:
|
||||
@ -753,7 +753,7 @@ class DomainTransitionAnalysisTest(mixins.ValidateRule, unittest.TestCase):
|
||||
for stepnum, step in enumerate(path):
|
||||
self.assertIsInstance(step.source, Type)
|
||||
self.assertIsInstance(step.target, Type)
|
||||
self.assertEqual(expected_path[stepnum+1], step.source)
|
||||
self.assertEqual(expected_path[stepnum + 1], step.source)
|
||||
self.assertEqual(expected_path[stepnum], step.target)
|
||||
|
||||
for r in step.transition:
|
||||
|
@ -21,7 +21,7 @@ from unittest.mock import Mock
|
||||
|
||||
from setools import PermissionMap, TERuletype
|
||||
from setools.exception import PermissionMapParseError, RuleTypeError, \
|
||||
UnmappedClass, UnmappedPermission
|
||||
UnmappedClass, UnmappedPermission
|
||||
|
||||
from .policyrep.util import compile_policy
|
||||
|
||||
|
@ -21,7 +21,7 @@ import unittest
|
||||
from unittest.mock import Mock, patch
|
||||
|
||||
from setools.exception import InvalidDefaultType, InvalidDefaultValue, \
|
||||
InvalidDefaultRange, NoDefaults
|
||||
InvalidDefaultRange, NoDefaults
|
||||
|
||||
|
||||
@unittest.skip("Needs to be reworked for cython")
|
||||
|
@ -16,7 +16,7 @@
|
||||
# along with SETools. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Until this is fixed for cython:
|
||||
# pylint: disable=undefined-variable
|
||||
# pylint: disable=undefined-variable,no-member
|
||||
import unittest
|
||||
from unittest.mock import Mock, patch
|
||||
|
||||
@ -32,7 +32,7 @@ class InitialSIDTest(unittest.TestCase):
|
||||
def mock_sid(name):
|
||||
sid = Mock(qpol.qpol_isid_t)
|
||||
sid.name.return_value = name
|
||||
sid.context.return_value = name+"_context"
|
||||
sid.context.return_value = name + "_context"
|
||||
return sid
|
||||
|
||||
@classmethod
|
||||
|
@ -16,13 +16,13 @@
|
||||
# along with SETools. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Until this is fixed for cython:
|
||||
# pylint: disable=undefined-variable
|
||||
# pylint: disable=undefined-variable,no-member
|
||||
import unittest
|
||||
from unittest.mock import Mock
|
||||
|
||||
from setools import SELinuxPolicy
|
||||
from setools.exception import MLSDisabled, InvalidLevel, InvalidLevelDecl, InvalidRange, \
|
||||
InvalidSensitivity, InvalidCategory, NoStatement
|
||||
InvalidSensitivity, InvalidCategory, NoStatement
|
||||
|
||||
|
||||
@unittest.skip("Needs to be reworked for cython")
|
||||
|
@ -16,7 +16,7 @@
|
||||
# along with SETools. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Until this is fixed for cython:
|
||||
# pylint: disable=undefined-variable
|
||||
# pylint: disable=undefined-variable,no-member
|
||||
import unittest
|
||||
from unittest.mock import Mock
|
||||
|
||||
@ -94,7 +94,7 @@ class ObjClassTest(unittest.TestCase):
|
||||
|
||||
if com_perms:
|
||||
com = Mock(qpol.qpol_common_t)
|
||||
com.name.return_value = name+"_common"
|
||||
com.name.return_value = name + "_common"
|
||||
com.perm_iter = lambda x: iter(com_perms)
|
||||
cls.common.return_value = com
|
||||
else:
|
||||
|
@ -16,7 +16,7 @@
|
||||
# along with SETools. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Until this is fixed for cython:
|
||||
# pylint: disable=undefined-variable
|
||||
# pylint: disable=undefined-variable,no-member
|
||||
import unittest
|
||||
from unittest.mock import Mock
|
||||
|
||||
|
@ -47,12 +47,10 @@ class SELinuxPolicyTest(unittest.TestCase):
|
||||
"""SELinuxPolicy: Non existant policy on open."""
|
||||
self.assertRaises(OSError, SELinuxPolicy, "tests/policyrep/DOES_NOT_EXIST")
|
||||
|
||||
@unittest.skip("Needs to be reworked for cython.")
|
||||
def test_003_deepcopy(self):
|
||||
"""SELinuxPolicy: Deep copy"""
|
||||
p = copy.deepcopy(self.p)
|
||||
self.assertIs(self.p.policy, p.policy)
|
||||
self.assertIs(self.p.filename, p.filename)
|
||||
self.assertIs(self.p, p)
|
||||
|
||||
def test_010_handle_unknown(self):
|
||||
"""SELinuxPolicy: handle unknown setting."""
|
||||
@ -231,7 +229,8 @@ class SELinuxPolicyLoadError(unittest.TestCase):
|
||||
"""Test attempted loading of non-compiling policies."""
|
||||
|
||||
def _load_policy(self, policy):
|
||||
self.assertRaises(InvalidPolicy, SELinuxPolicy, "tests/policyrep/invalid_policies/"+policy)
|
||||
self.assertRaises(InvalidPolicy, SELinuxPolicy,
|
||||
"tests/policyrep/invalid_policies/" + policy)
|
||||
|
||||
def test_nodecon_invalid_range(self):
|
||||
"""SELinuxPolicy: invalid nodecon range (category not associated) error."""
|
||||
|
@ -22,7 +22,7 @@ from unittest.mock import Mock, patch
|
||||
|
||||
from setools import SELinuxPolicy
|
||||
from setools.exception import InvalidTERuleType, RuleNotConditional, RuleUseError, \
|
||||
TERuleNoFilename
|
||||
TERuleNoFilename
|
||||
|
||||
|
||||
@unittest.skip("Needs to be reworked for cython")
|
||||
|
@ -16,7 +16,7 @@
|
||||
# along with SETools. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Until this is fixed for cython:
|
||||
# pylint: disable=undefined-variable
|
||||
# pylint: disable=undefined-variable,no-member
|
||||
import unittest
|
||||
from unittest.mock import Mock, patch
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
||||
# along with SETools. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Until this is fixed for cython:
|
||||
# pylint: disable=undefined-variable
|
||||
# pylint: disable=undefined-variable,no-member
|
||||
import unittest
|
||||
from unittest.mock import Mock, patch
|
||||
|
||||
|
@ -313,7 +313,7 @@ class TERuleQueryXperm(mixins.ValidateRule, unittest.TestCase):
|
||||
r = sorted(q.results())
|
||||
self.assertEqual(len(r), 1)
|
||||
self.validate_rule(r[0], TRT.allowxperm, "test1a", "test1t", "infoflow",
|
||||
set(range(0xebe0, 0xebff+1)), xperm="ioctl")
|
||||
set(range(0xebe0, 0xebff + 1)), xperm="ioctl")
|
||||
|
||||
def test_002_source_indirect(self):
|
||||
"""Xperm rule query with exact, indirect, source match."""
|
||||
|
12
tox.ini
12
tox.ini
@ -2,15 +2,17 @@
|
||||
minversion = 1.4
|
||||
envlist = py34, py35, py36
|
||||
|
||||
[pep8]
|
||||
exclude = qpol.py
|
||||
[pycodestyle]
|
||||
max-line-length = 100
|
||||
# W605 ignored because pycodestyle gets confused by a regex string
|
||||
# in AVRuleTest test_103_statement_two_perms_cond
|
||||
ignore = W605
|
||||
|
||||
[testenv:pep8]
|
||||
deps = pep8
|
||||
deps = pycodestyle
|
||||
cython>=0.27
|
||||
commands = pep8 --version
|
||||
pep8 setools/ setoolsgui/ tests/ seinfo seinfoflow sedta sesearch sediff --statistics
|
||||
commands = pycodestyle --version
|
||||
pycodestyle setools/ setoolsgui/ tests/ seinfo seinfoflow sedta sesearch sediff --statistics
|
||||
|
||||
[testenv:coverage]
|
||||
setenv = SETOOLS_COVERAGE = 1
|
||||
|
Loading…
Reference in New Issue
Block a user