Blame SOURCES/0002-Make-seinfo-output-predictable.patch

26bda7
From 4e6f6c95cfe7ca4a3a9d9e0dbd6e23e4bac2449c Mon Sep 17 00:00:00 2001
26bda7
From: Petr Lautrbach <plautrba@redhat.com>
26bda7
Date: Thu, 18 Nov 2021 13:59:08 +0100
26bda7
Subject: [PATCH] Make seinfo output predictable
26bda7
26bda7
There are few places where frozenset is used. Given that frozenset is an unordered
26bda7
collection the output generated from this is unpredictable.
26bda7
26bda7
The following command outputs are fixed using sorted() on frozensets:
26bda7
26bda7
    seinfo --constrain
26bda7
    seinfo --common
26bda7
    seinfo -c -x
26bda7
    seinfo -r -x
26bda7
    seinfo -u -x
26bda7
26bda7
Fixes: https://github.com/SELinuxProject/setools/issues/65
26bda7
26bda7
Signed-off-by: Petr Lautrbach <plautrba@redhat.com>
26bda7
---
26bda7
 setools/policyrep/constraint.pxi | 2 +-
26bda7
 setools/policyrep/objclass.pxi   | 4 ++--
26bda7
 setools/policyrep/role.pxi       | 2 +-
26bda7
 setools/policyrep/user.pxi       | 2 +-
26bda7
 4 files changed, 5 insertions(+), 5 deletions(-)
26bda7
26bda7
diff --git a/setools/policyrep/constraint.pxi b/setools/policyrep/constraint.pxi
26bda7
index d5221a1..77c3e2e 100644
26bda7
--- a/setools/policyrep/constraint.pxi
26bda7
+++ b/setools/policyrep/constraint.pxi
26bda7
@@ -66,7 +66,7 @@ cdef class Constraint(BaseConstraint):
26bda7
 
26bda7
     def statement(self):
26bda7
         if len(self.perms) > 1:
26bda7
-            perms = "{{ {0} }}".format(' '.join(self.perms))
26bda7
+            perms = "{{ {0} }}".format(' '.join(sorted(self.perms)))
26bda7
         else:
26bda7
             # convert to list since sets cannot be indexed
26bda7
             perms = list(self.perms)[0]
26bda7
diff --git a/setools/policyrep/objclass.pxi b/setools/policyrep/objclass.pxi
26bda7
index b7ec7b7..8ed2be5 100644
26bda7
--- a/setools/policyrep/objclass.pxi
26bda7
+++ b/setools/policyrep/objclass.pxi
26bda7
@@ -75,7 +75,7 @@ cdef class Common(PolicySymbol):
26bda7
         return other in self.perms
26bda7
 
26bda7
     def statement(self):
26bda7
-        return "common {0}\n{{\n\t{1}\n}}".format(self, '\n\t'.join(self.perms))
26bda7
+        return "common {0}\n{{\n\t{1}\n}}".format(self, '\n\t'.join(sorted(self.perms)))
26bda7
 
26bda7
 
26bda7
 cdef class ObjClass(PolicySymbol):
26bda7
@@ -204,7 +204,7 @@ cdef class ObjClass(PolicySymbol):
26bda7
 
26bda7
         # a class that inherits may not have additional permissions
26bda7
         if len(self.perms) > 0:
26bda7
-            stmt += "{{\n\t{0}\n}}".format('\n\t'.join(self.perms))
26bda7
+            stmt += "{{\n\t{0}\n}}".format('\n\t'.join(sorted(self.perms)))
26bda7
 
26bda7
         return stmt
26bda7
 
26bda7
diff --git a/setools/policyrep/role.pxi b/setools/policyrep/role.pxi
26bda7
index 9a0dd39..3af8a3f 100644
26bda7
--- a/setools/policyrep/role.pxi
26bda7
+++ b/setools/policyrep/role.pxi
26bda7
@@ -58,7 +58,7 @@ cdef class Role(PolicySymbol):
26bda7
         if count == 1:
26bda7
             stmt += " types {0}".format(types[0])
26bda7
         else:
26bda7
-            stmt += " types {{ {0} }}".format(' '.join(types))
26bda7
+            stmt += " types {{ {0} }}".format(' '.join(sorted(types)))
26bda7
 
26bda7
         stmt += ";"
26bda7
         return stmt
26bda7
diff --git a/setools/policyrep/user.pxi b/setools/policyrep/user.pxi
26bda7
index 9c82aa9..e37af29 100644
26bda7
--- a/setools/policyrep/user.pxi
26bda7
+++ b/setools/policyrep/user.pxi
26bda7
@@ -81,7 +81,7 @@ cdef class User(PolicySymbol):
26bda7
         if count == 1:
26bda7
             stmt += roles[0]
26bda7
         else:
26bda7
-            stmt += "{{ {0} }}".format(' '.join(roles))
26bda7
+            stmt += "{{ {0} }}".format(' '.join(sorted(roles)))
26bda7
 
26bda7
         if self._level:
26bda7
             stmt += " level {0.mls_level} range {0.mls_range};".format(self)
26bda7
-- 
26bda7
2.30.2
26bda7