1*4882a593SmuzhiyunFrom ae84e5ef59bb24d5b8fd17e6756952f42c2d5c36 Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: rpm-build <rpm-build>
3*4882a593SmuzhiyunDate: Thu, 23 Feb 2017 08:17:07 +0100
4*4882a593SmuzhiyunSubject: [PATCH] Do not export/use setools.InfoFlowAnalysis and
5*4882a593Smuzhiyun setools.DomainTransitionAnalysis
6*4882a593Smuzhiyun
7*4882a593Smuzhiyundta and infoflow modules require networkx which brings lot of dependencies.
8*4882a593SmuzhiyunThese dependencies are not necessary for setools module itself as it's
9*4882a593Smuzhiyunused in policycoreutils.
10*4882a593Smuzhiyun
11*4882a593SmuzhiyunTherefore it's better to use setools.infoflow.InfoFlowAnalysis and
12*4882a593Smuzhiyunsetools.dta.DomainTransitionAnalysis and let the package containing
13*4882a593Smuzhiyunsedta and seinfoflow to require python3-networkx
14*4882a593Smuzhiyun
15*4882a593SmuzhiyunSigned-off-by: Antoine Tenart <antoine.tenart@bootlin.com>
16*4882a593Smuzhiyun[Refreshed for 4.3.0]
17*4882a593SmuzhiyunSigned-off-by: Adam Duskett <aduskett@gmail.com>
18*4882a593Smuzhiyun[Refreshed for 4.4.0]
19*4882a593Smuzhiyun---
20*4882a593Smuzhiyun sedta                       | 3 ++-
21*4882a593Smuzhiyun seinfoflow                  | 5 +++--
22*4882a593Smuzhiyun setools/__init__.py         | 4 ++--
23*4882a593Smuzhiyun setoolsgui/apol/dta.py      | 2 +-
24*4882a593Smuzhiyun setoolsgui/apol/infoflow.py | 2 +-
25*4882a593Smuzhiyun tests/dta.py                | 2 +-
26*4882a593Smuzhiyun tests/infoflow.py           | 2 +-
27*4882a593Smuzhiyun 7 files changed, 11 insertions(+), 9 deletions(-)
28*4882a593Smuzhiyun
29*4882a593Smuzhiyundiff --git a/sedta b/sedta
30*4882a593Smuzhiyunindex 60861ca630a5..0056172a55e5 100755
31*4882a593Smuzhiyun--- a/sedta
32*4882a593Smuzhiyun+++ b/sedta
33*4882a593Smuzhiyun@@ -23,6 +23,7 @@ import logging
34*4882a593Smuzhiyun import signal
35*4882a593Smuzhiyun
36*4882a593Smuzhiyun import setools
37*4882a593Smuzhiyun+import setools.dta
38*4882a593Smuzhiyun
39*4882a593Smuzhiyun
40*4882a593Smuzhiyun def print_transition(trans: setools.DomainTransition) -> None:
41*4882a593Smuzhiyun@@ -114,7 +115,7 @@ else:
42*4882a593Smuzhiyun
43*4882a593Smuzhiyun try:
44*4882a593Smuzhiyun     p = setools.SELinuxPolicy(args.policy)
45*4882a593Smuzhiyun-    g = setools.DomainTransitionAnalysis(p, reverse=args.reverse, exclude=args.exclude)
46*4882a593Smuzhiyun+    g = setools.dta.DomainTransitionAnalysis(p, reverse=args.reverse, exclude=args.exclude)
47*4882a593Smuzhiyun
48*4882a593Smuzhiyun     if args.shortest_path or args.all_paths:
49*4882a593Smuzhiyun         if args.shortest_path:
50*4882a593Smuzhiyundiff --git a/seinfoflow b/seinfoflow
51*4882a593Smuzhiyunindex f10c39de4d8e..fe733bbd0787 100755
52*4882a593Smuzhiyun--- a/seinfoflow
53*4882a593Smuzhiyun+++ b/seinfoflow
54*4882a593Smuzhiyun@@ -18,6 +18,7 @@
55*4882a593Smuzhiyun #
56*4882a593Smuzhiyun
57*4882a593Smuzhiyun import setools
58*4882a593Smuzhiyun+import setools.infoflow
59*4882a593Smuzhiyun import argparse
60*4882a593Smuzhiyun import sys
61*4882a593Smuzhiyun import logging
62*4882a593Smuzhiyun@@ -102,8 +103,8 @@ elif args.booleans is not None:
63*4882a593Smuzhiyun try:
64*4882a593Smuzhiyun     p = setools.SELinuxPolicy(args.policy)
65*4882a593Smuzhiyun     m = setools.PermissionMap(args.map)
66*4882a593Smuzhiyun-    g = setools.InfoFlowAnalysis(p, m, min_weight=args.min_weight, exclude=args.exclude,
67*4882a593Smuzhiyun-                                 booleans=booleans)
68*4882a593Smuzhiyun+    g = setools.infoflow.InfoFlowAnalysis(p, m, min_weight=args.min_weight, exclude=args.exclude,
69*4882a593Smuzhiyun+                                          booleans=booleans)
70*4882a593Smuzhiyun
71*4882a593Smuzhiyun     if args.shortest_path or args.all_paths:
72*4882a593Smuzhiyun         if args.shortest_path:
73*4882a593Smuzhiyundiff --git a/setools/__init__.py b/setools/__init__.py
74*4882a593Smuzhiyunindex d72d343..4d5aaaa 100644
75*4882a593Smuzhiyun--- a/setools/__init__.py
76*4882a593Smuzhiyun+++ b/setools/__init__.py
77*4882a593Smuzhiyun@@ -91,11 +91,11 @@ from .pcideviceconquery import PcideviceconQuery
78*4882a593Smuzhiyun from .devicetreeconquery import DevicetreeconQuery
79*4882a593Smuzhiyun
80*4882a593Smuzhiyun # Information Flow Analysis
81*4882a593Smuzhiyun-from .infoflow import InfoFlowAnalysis
82*4882a593Smuzhiyun+# from .infoflow import InfoFlowAnalysis
83*4882a593Smuzhiyun from .permmap import PermissionMap, RuleWeight, Mapping
84*4882a593Smuzhiyun
85*4882a593Smuzhiyun # Domain Transition Analysis
86*4882a593Smuzhiyun-from .dta import DomainTransitionAnalysis, DomainEntrypoint, DomainTransition
87*4882a593Smuzhiyun+# from .dta import DomainTransitionAnalysis, DomainEntrypoint, DomainTransition
88*4882a593Smuzhiyun
89*4882a593Smuzhiyun # Policy difference
90*4882a593Smuzhiyun from .diff import PolicyDifference
91*4882a593Smuzhiyundiff --git a/setoolsgui/apol/dta.py b/setoolsgui/apol/dta.py
92*4882a593Smuzhiyunindex 4608b9dbf34e..2cde44c142e9 100644
93*4882a593Smuzhiyun--- a/setoolsgui/apol/dta.py
94*4882a593Smuzhiyun+++ b/setoolsgui/apol/dta.py
95*4882a593Smuzhiyun@@ -24,7 +24,7 @@ from PyQt5.QtCore import pyqtSignal, Qt, QStringListModel, QThread
96*4882a593Smuzhiyun from PyQt5.QtGui import QPalette, QTextCursor
97*4882a593Smuzhiyun from PyQt5.QtWidgets import QCompleter, QHeaderView, QMessageBox, QProgressDialog, \
98*4882a593Smuzhiyun     QTreeWidgetItem
99*4882a593Smuzhiyun-from setools import DomainTransitionAnalysis
100*4882a593Smuzhiyun+from setools.dta import DomainTransitionAnalysis
101*4882a593Smuzhiyun
102*4882a593Smuzhiyun from ..logtosignal import LogHandlerToSignal
103*4882a593Smuzhiyun from .analysistab import AnalysisSection, AnalysisTab
104*4882a593Smuzhiyundiff --git a/setoolsgui/apol/infoflow.py b/setoolsgui/apol/infoflow.py
105*4882a593Smuzhiyunindex 7bca299d23fc..7fee2778f35f 100644
106*4882a593Smuzhiyun--- a/setoolsgui/apol/infoflow.py
107*4882a593Smuzhiyun+++ b/setoolsgui/apol/infoflow.py
108*4882a593Smuzhiyun@@ -26,7 +26,7 @@ from PyQt5.QtCore import pyqtSignal, Qt, QStringListModel, QThread
109*4882a593Smuzhiyun from PyQt5.QtGui import QPalette, QTextCursor
110*4882a593Smuzhiyun from PyQt5.QtWidgets import QCompleter, QHeaderView, QMessageBox, QProgressDialog, \
111*4882a593Smuzhiyun     QTreeWidgetItem
112*4882a593Smuzhiyun-from setools import InfoFlowAnalysis
113*4882a593Smuzhiyun+from setools.infoflow import InfoFlowAnalysis
114*4882a593Smuzhiyun from setools.exception import UnmappedClass, UnmappedPermission
115*4882a593Smuzhiyun
116*4882a593Smuzhiyun from ..logtosignal import LogHandlerToSignal
117*4882a593Smuzhiyundiff --git a/tests/dta.py b/tests/dta.py
118*4882a593Smuzhiyunindex a0cc9381469c..177e6fb0b961 100644
119*4882a593Smuzhiyun--- a/tests/dta.py
120*4882a593Smuzhiyun+++ b/tests/dta.py
121*4882a593Smuzhiyun@@ -18,7 +18,7 @@
122*4882a593Smuzhiyun import os
123*4882a593Smuzhiyun import unittest
124*4882a593Smuzhiyun
125*4882a593Smuzhiyun-from setools import DomainTransitionAnalysis
126*4882a593Smuzhiyun+from setools.dta import DomainTransitionAnalysis
127*4882a593Smuzhiyun from setools import TERuletype as TERT
128*4882a593Smuzhiyun from setools.exception import InvalidType
129*4882a593Smuzhiyun from setools.policyrep import Type
130*4882a593Smuzhiyundiff --git a/tests/infoflow.py b/tests/infoflow.py
131*4882a593Smuzhiyunindex aa0e44a7e4f8..fca2848aeca5 100644
132*4882a593Smuzhiyun--- a/tests/infoflow.py
133*4882a593Smuzhiyun+++ b/tests/infoflow.py
134*4882a593Smuzhiyun@@ -18,7 +18,7 @@
135*4882a593Smuzhiyun import os
136*4882a593Smuzhiyun import unittest
137*4882a593Smuzhiyun
138*4882a593Smuzhiyun-from setools import InfoFlowAnalysis
139*4882a593Smuzhiyun+from setools.infoflow import InfoFlowAnalysis
140*4882a593Smuzhiyun from setools import TERuletype as TERT
141*4882a593Smuzhiyun from setools.exception import InvalidType
142*4882a593Smuzhiyun from setools.permmap import PermissionMap
143*4882a593Smuzhiyun--
144*4882a593Smuzhiyun2.26.2
145*4882a593Smuzhiyun
146