Hello community, here is the log from the commit of package policycoreutils for openSUSE:Factory checked in at 2020-03-11 18:33:33 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/policycoreutils (Old) and /work/SRC/openSUSE:Factory/.policycoreutils.new.3160 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "policycoreutils" Wed Mar 11 18:33:33 2020 rev:54 rq:782826 version:3.0 Changes: -------- --- /work/SRC/openSUSE:Factory/policycoreutils/policycoreutils.changes 2019-12-24 14:29:17.690556343 +0100 +++ /work/SRC/openSUSE:Factory/.policycoreutils.new.3160/policycoreutils.changes 2020-03-11 18:34:21.942973009 +0100 @@ -1,0 +2,32 @@ +Mon Mar 9 08:31:11 UTC 2020 - Johannes Segitz <jseg...@suse.de> + +- Dropped Recommends: for %{name}-lang and %{name}-devel. Not + allowed by openSUSE guidelines + +------------------------------------------------------------------- +Tue Mar 3 12:30:55 UTC 2020 - Johannes Segitz <jseg...@suse.de> + +- Update to version 3.0 + * fixfiles: Fix "verify" option + * fixfiles: Fix [-B] [-F] onboot + * fixfiles: Force full relabel when SELinux is disabled + * semodule: Enable CIL logging + * semanage: Add support for DCCP and SCTP protocols + * semanage: Do not use default s0 range in "semanage login -a" + * semanage: Document DCCP and SCTP support + * semanage: Improve handling of "permissive" statements + * semanage: fix moduleRecords.customized() + Refreshed chcat_join.patch + +------------------------------------------------------------------- +Thu Feb 27 16:03:36 UTC 2020 - Johannes Segitz <jseg...@suse.de> + +- Ship working pam config for newrole (bsc#1163020) +- Recommend policycoreutils-devel to have perm_map file available + +------------------------------------------------------------------- +Wed Feb 19 14:31:39 UTC 2020 - Johannes Segitz <jseg...@suse.de> + +- Package perm_map as it's used by audit2* tools + +------------------------------------------------------------------- Old: ---- policycoreutils-2.9.tar.gz selinux-python-2.9.tar.gz semodule-utils-2.9.tar.gz New: ---- newrole.pam policycoreutils-3.0.tar.gz selinux-python-3.0.tar.gz semodule-utils-3.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ policycoreutils.spec ++++++ --- /var/tmp/diff_new_pack.U20k7w/_old 2020-03-11 18:34:24.370974499 +0100 +++ /var/tmp/diff_new_pack.U20k7w/_new 2020-03-11 18:34:24.370974499 +0100 @@ -1,7 +1,7 @@ # # spec file for package policycoreutils # -# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,13 +17,13 @@ %define libaudit_ver 2.2 -%define libsepol_ver 2.9 -%define libsemanage_ver 2.9 -%define libselinux_ver 2.9 +%define libsepol_ver 3.0 +%define libsemanage_ver 3.0 +%define libselinux_ver 3.0 %define setools_ver 4.1.1 -%define tstamp 20190315 +%define tstamp 20191204 Name: policycoreutils -Version: 2.9 +Version: 3.0 Release: 0 Summary: SELinux policy core utilities License: GPL-2.0-or-later @@ -38,6 +38,7 @@ Source6: selinux-polgengui.desktop Source7: selinux-polgengui.console Source8: https://github.com/SELinuxProject/selinux/releases/download/%{tstamp}/semodule-utils-%{version}.tar.gz +Source9: newrole.pam Patch0: make_targets.patch Patch1: run_init_use_pam_keyinit.patch Patch2: chcat_join.patch @@ -59,6 +60,7 @@ BuildRequires: polkit BuildRequires: python-rpm-macros BuildRequires: python3 +BuildRequires: python3-setools >= %{setools_ver} BuildRequires: systemd-rpm-macros BuildRequires: update-desktop-files BuildRequires: xmlto @@ -76,7 +78,6 @@ Requires(post): selinux-tools Requires(pre): %fillup_prereq Requires(pre): permissions -Recommends: %{name}-lang Obsoletes: policycoreutils-python %{?systemd_requires} @@ -190,6 +191,7 @@ mkdir -p %{buildroot}%{_fillupdir}/ mkdir -p %{buildroot}%{_libexecdir}/selinux/hll/ mkdir -p %{buildroot}%{_localstatedir}/lib/sepolgen +cp %{python3_sitearch}/setools/perm_map %{buildroot}%{_localstatedir}/lib/sepolgen mv %{buildroot}%{_prefix}/libexec/selinux/hll/pp %{buildroot}%{_libexecdir}/selinux/hll/pp %suse_update_desktop_file -i system-config-selinux System Security Settings %suse_update_desktop_file -i selinux-polgengui System Security Settings @@ -207,6 +209,7 @@ %{buildroot}%{_datadir}/applications/system-config-selinux.desktop \ %{buildroot}%{_datadir}/pixmaps/system-config-selinux.png %endif +cp -f %{SOURCE9} %{buildroot}%{_sysconfdir}/pam.d/newrole %post -n python3-%{name} selinuxenabled && [ -f %{_datadir}/selinux/devel/include/build.conf ] && %{_bindir}/sepolgen-ifgen 2>/dev/null ++++++ chcat_join.patch ++++++ --- /var/tmp/diff_new_pack.U20k7w/_old 2020-03-11 18:34:24.398974516 +0100 +++ /var/tmp/diff_new_pack.U20k7w/_new 2020-03-11 18:34:24.398974516 +0100 @@ -1,8 +1,8 @@ -Index: policycoreutils-2.9/selinux-python-2.9/chcat/chcat +Index: policycoreutils-3.0/selinux-python-3.0/chcat/chcat =================================================================== ---- policycoreutils-2.9.orig/selinux-python-2.9/chcat/chcat 2019-03-15 10:32:30.000000000 +0000 -+++ policycoreutils-2.9/selinux-python-2.9/chcat/chcat 2019-12-17 10:31:24.683910599 +0000 -@@ -246,7 +246,10 @@ def chcat_user_replace(newcat, users): +--- policycoreutils-3.0.orig/selinux-python-3.0/chcat/chcat ++++ policycoreutils-3.0/selinux-python-3.0/chcat/chcat +@@ -245,7 +245,10 @@ def chcat_user_replace(newcat, users): add_ind = 1 user = seusers["__default__"] serange = user[1].split("-") ++++++ newrole.pam ++++++ auth include common-auth account include common-account password include common-password session include common-session session optional pam_xauth.so ++++++ policycoreutils-2.9.tar.gz -> policycoreutils-3.0.tar.gz ++++++ ++++ 5826 lines of diff (skipped) ++++++ selinux-python-2.9.tar.gz -> selinux-python-3.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/VERSION new/selinux-python-3.0/VERSION --- old/selinux-python-2.9/VERSION 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/VERSION 2019-11-28 13:46:48.000000000 +0100 @@ -1 +1 @@ -2.9 +3.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/audit2allow/sepolgen-ifgen new/selinux-python-3.0/audit2allow/sepolgen-ifgen --- old/selinux-python-2.9/audit2allow/sepolgen-ifgen 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/audit2allow/sepolgen-ifgen 2019-11-28 13:46:48.000000000 +0100 @@ -53,7 +53,7 @@ parser.add_option("-a", "--attribute_info", dest="attribute_info") parser.add_option("-p", "--policy", dest="policy_path") parser.add_option("-v", "--verbose", action="store_true", default=False, - help="print debuging output") + help="print debugging output") parser.add_option("-d", "--debug", action="store_true", default=False, help="extra debugging output") parser.add_option("--attr-helper", default=ATTR_HELPER, @@ -126,7 +126,7 @@ else: log = None - # Get the attibutes from the binary + # Get the attributes from the binary attrs = None if not options.no_attrs: attrs = get_attrs(options.policy_path, options.attr_helper) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/chcat/chcat new/selinux-python-3.0/chcat/chcat --- old/selinux-python-2.9/chcat/chcat 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/chcat/chcat 2019-11-28 13:46:48.000000000 +0100 @@ -115,7 +115,6 @@ errors = 0 sensitivity = newcat[0] cat = newcat[1] - cmd = 'chcon -l %s' % sensitivity for f in objects: (rc, c) = selinux.getfilecon(f) con = c.split(":")[3:] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/semanage/ru/semanage.8 new/selinux-python-3.0/semanage/ru/semanage.8 --- old/selinux-python-2.9/semanage/ru/semanage.8 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/semanage/ru/semanage.8 2019-11-28 13:46:48.000000000 +0100 @@ -50,7 +50,7 @@ Управлять определениями типов конечных портов infiniband .SH "ОПИСАНИЕ" -semanage используется для настройки определённых элементов политики SELinux без необходимости изменения или перекомпиляции исходного текста политики. Это включает сопоставление имён пользователей Linux с пользователями SELinux (что управляет исходным контекстом безопасности, который присваивается пользователям Linux при их входе в систему, и ограничивает доступный им набор ролей). Также это включает сопоставление контекстов безопасности для различных видов объектов, таких как сетевые порты, интерфейсы, ключи разделов (pkeys) и конечные порты (endports) infiniband, сетевые узлы (хосты), а также сопоставление контекстов файлов. В разделе ПРИМЕРЫ приведены примеры обычного использования этой утилиты. Обратите внимание, что при вызове команды semanage login пользователи Linux (logins) сопоставляются с пользователями SELinux, а при вызове команды semanage user пользователи SELinux сопоставляются с доступными наборами ролей. В большинстве случаев администратору требуется настроить только первый тип сопоставлений; второй тип сопоставлений определяется базовой политикой и обычно не требует изменения. +semanage используется для настройки определённых элементов политики SELinux без необходимости изменения или перекомпиляции исходного текста политики. Это включает сопоставление имён пользователей Linux с пользователями SELinux (что управляет исходным контекстом безопасности, который присваивается пользователям Linux при их входе в систему, и ограничивает доступный им набор ролей). Также это включает сопоставление контекстов безопасности для различных видов объектов, таких как сетевые порты, интерфейсы, ключи разделов (pkeys) и конечные порты (endports) infiniband, сетевые узлы (хосты), а также сопоставление контекстов файлов. Обратите внимание, что при вызове команды semanage login пользователи Linux (logins) сопоставляются с пользователями SELinux, а при вызове команды semanage user пользователи SELinux сопоставляются с доступными наборами ролей. В большинстве случаев администратору требуется настроить только первый тип сопоставлений; второй тип сопоставлений определяется базовой политикой и обычно не требует изменения. .SH "ПАРАМЕТРЫ" .TP diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/semanage/semanage new/selinux-python-3.0/semanage/semanage --- old/selinux-python-2.9/semanage/semanage 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/semanage/semanage 2019-11-28 13:46:48.000000000 +0100 @@ -73,9 +73,6 @@ usage_boolean = "semanage boolean [-h] [-n] [-N] [-S STORE] [" usage_boolean_dict = {' --modify': ('(', '--on', '|', '--off', ')', 'boolean'), ' --list': ('-C',), ' --extract': ('',), ' --deleteall': ('',)} - - - class CheckRole(argparse.Action): def __call__(self, parser, namespace, value, option_string=None): @@ -237,7 +234,7 @@ def parser_add_range(parser, name): - parser.add_argument('-r', '--range', default="s0", + parser.add_argument('-r', '--range', default='', help=_(''' MLS/MCS Security Range (MLS/MCS Systems only) SELinux Range for SELinux login mapping @@ -248,7 +245,7 @@ def parser_add_proto(parser, name): parser.add_argument('-p', '--proto', help=_(''' - Protocol for the specified port (tcp|udp) or internet protocol + Protocol for the specified port (tcp|udp|dccp|sctp) or internet protocol version for the specified node (ipv4|ipv6). ''')) @@ -737,6 +734,11 @@ if args.action == "list": OBJECT.list(args.noheading) + elif args.action == "deleteall": + OBJECT.deleteall() + elif args.action == "extract": + for i in OBJECT.customized(): + print("permissive %s" % str(i)) elif args.type is not None: if args.action == "add": OBJECT.add(args.type) @@ -752,9 +754,9 @@ pgroup = permissiveParser.add_mutually_exclusive_group(required=True) parser_add_add(pgroup, "permissive") parser_add_delete(pgroup, "permissive") + parser_add_deleteall(pgroup, "permissive") + parser_add_extract(pgroup, "permissive") parser_add_list(pgroup, "permissive") - #TODO: probably should be also added => need to implement own option handling - #parser_add_deleteall(pgroup) parser_add_noheading(permissiveParser, "permissive") parser_add_noreload(permissiveParser, "permissive") @@ -778,7 +780,7 @@ def handleExport(args): - manageditems = ["boolean", "login", "interface", "user", "port", "node", "fcontext", "module", "ibendport", "ibpkey"] + manageditems = ["boolean", "login", "interface", "user", "port", "node", "fcontext", "module", "ibendport", "ibpkey", "permissive"] for i in manageditems: print("%s -D" % i) for i in manageditems: @@ -906,7 +908,7 @@ def make_io_args(args): - # import/export backward compability + # import/export backward compatibility args_origin = ["-S", "-o", "-i", "targeted", "minimum", "mls"] args_file = [] args_ie = [] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/semanage/semanage-boolean.8 new/selinux-python-3.0/semanage/semanage-boolean.8 --- old/selinux-python-2.9/semanage/semanage-boolean.8 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/semanage/semanage-boolean.8 2019-11-28 13:46:48.000000000 +0100 @@ -45,7 +45,7 @@ .SH EXAMPLE .nf -Turn on the apache can send mail boolan +Turn on the apache can send mail boolean # semanage boolean \-m \-\-on httpd_can_sendmail List customized booleans diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/semanage/semanage-permissive.8 new/selinux-python-3.0/semanage/semanage-permissive.8 --- old/selinux-python-2.9/semanage/semanage-permissive.8 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/semanage/semanage-permissive.8 2019-11-28 13:46:48.000000000 +0100 @@ -2,7 +2,7 @@ .SH "NAME" .B semanage\-permissive \- SELinux Policy Management permissive mapping tool .SH "SYNOPSIS" -.B semanage permissive [\-h] (\-a | \-d | \-l) [\-n] [\-N] [\-S STORE] [type] +.B semanage permissive [\-h] [\-n] [\-N] [\-S STORE] (\-\-add TYPE | \-\-delete TYPE | \-\-deleteall | \-\-extract | \-\-list) .SH "DESCRIPTION" semanage is used to configure certain elements of SELinux policy without requiring modification to or recompilation from policy sources. semanage permissive adds or removes a SELinux Policy permissive module. @@ -18,9 +18,15 @@ .I \-d, \-\-delete Delete a record of the specified object type .TP +.I \-D, \-\-deleteall +Remove all local customizations of permissive domains +.TP .I \-l, \-\-list List records of the specified object type .TP +.I \-E, \-\-extract +Extract customizable commands, for use within a transaction +.TP .I \-n, \-\-noheading Do not print heading when listing the specified object type .TP diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/semanage/semanage-port.8 new/selinux-python-3.0/semanage/semanage-port.8 --- old/selinux-python-2.9/semanage/semanage-port.8 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/semanage/semanage-port.8 2019-11-28 13:46:48.000000000 +0100 @@ -49,7 +49,7 @@ MLS/MCS Security Range (MLS/MCS Systems only) SELinux Range for SELinux login mapping defaults to the SELinux user record range. SELinux Range for SELinux user defaults to s0. .TP .I \-p PROTO, \-\-proto PROTO -Protocol for the specified port (tcp|udp) or internet protocol version for the specified node (ipv4|ipv6). +Protocol for the specified port (tcp|udp|dccp|sctp) or internet protocol version for the specified node (ipv4|ipv6). .SH EXAMPLE .nf diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/semanage/seobject.py new/selinux-python-3.0/semanage/seobject.py --- old/selinux-python-2.9/semanage/seobject.py 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/semanage/seobject.py 2019-11-28 13:46:48.000000000 +0100 @@ -380,7 +380,7 @@ def customized(self): all = self.get_all() if len(all) == 0: - return + return [] return ["-d %s" % x[0] for x in [t for t in all if t[1] == 0]] def list(self, heading=1, locallist=0): @@ -478,6 +478,9 @@ l.append(name.split("permissive_")[1]) return l + def customized(self): + return ["-a %s" % x for x in sorted(self.get_all())] + def list(self, heading=1, locallist=0): all = [y["name"] for y in [x for x in sepolicy.info(sepolicy.TYPE) if x["permissive"]]] if len(all) == 0: @@ -1055,13 +1058,15 @@ pass def __genkey(self, port, proto): - if proto == "tcp": - proto_d = SEMANAGE_PROTO_TCP + protocols = {"tcp": SEMANAGE_PROTO_TCP, + "udp": SEMANAGE_PROTO_UDP, + "sctp": SEMANAGE_PROTO_SCTP, + "dccp": SEMANAGE_PROTO_DCCP} + + if proto in protocols.keys(): + proto_d = protocols[proto] else: - if proto == "udp": - proto_d = SEMANAGE_PROTO_UDP - else: - raise ValueError(_("Protocol udp or tcp is required")) + raise ValueError(_("Protocol has to be one of udp, tcp, dccp or sctp")) if port == "": raise ValueError(_("Port is required")) @@ -1849,7 +1854,7 @@ if addr == "": raise ValueError(_("Node Address is required")) - # verify valid comination + # verify valid combination if len(mask) == 0 or mask[0] == "/": i = IP(addr + mask) newaddr = i.strNormal(0) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/sepolgen/HACKING new/selinux-python-3.0/sepolgen/HACKING --- old/selinux-python-2.9/sepolgen/HACKING 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/sepolgen/HACKING 2019-11-28 13:46:48.000000000 +0100 @@ -24,7 +24,7 @@ This representation can be used as output from the parser to represent the reference policy interfaces. It can also be used to generate -policy by building up the relevent data structures and then outputting +policy by building up the relevant data structures and then outputting them. See sepolgen.policygen and sepolgen.output for information on how this can be done. @@ -75,5 +75,3 @@ information about the object classes - including information flow. It is separated to keep the core from being concerned about the details of the object classes. - -[selist]: http://www.nsa.gov/research/selinux/info/list.cfm diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/sepolgen/VERSION new/selinux-python-3.0/sepolgen/VERSION --- old/selinux-python-2.9/sepolgen/VERSION 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/sepolgen/VERSION 2019-11-28 13:46:48.000000000 +0100 @@ -1 +1 @@ -2.9 +3.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/sepolgen/src/sepolgen/access.py new/selinux-python-3.0/sepolgen/src/sepolgen/access.py --- old/selinux-python-2.9/sepolgen/src/sepolgen/access.py 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/sepolgen/src/sepolgen/access.py 2019-11-28 13:46:48.000000000 +0100 @@ -23,7 +23,7 @@ SELinux - at the most basic level - represents access as the 4-tuple subject (type or context), target (type or context), object class, permission. The policy language elaborates this basic -access to faciliate more concise rules (e.g., allow rules can have multiple +access to facilitate more concise rules (e.g., allow rules can have multiple source or target types - see refpolicy for more information). This module has objects for representing the most basic access (AccessVector) @@ -37,12 +37,12 @@ from selinux import audit2why def is_idparam(id): - """Determine if an id is a paramater in the form $N, where N is + """Determine if an id is a parameter in the form $N, where N is an integer. Returns: - True if the id is a paramater - False if the id is not a paramater + True if the id is a parameter + False if the id is not a parameter """ if len(id) > 1 and id[0] == '$': try: @@ -167,7 +167,7 @@ def avrule_to_access_vectors(avrule): """Convert an avrule into a list of access vectors. - AccessVectors and AVRules are similary, but differ in that + AccessVectors and AVRules are similarly, but differ in that an AVRule can more than one source type, target type, and object class. This function expands a single avrule into a list of one or more AccessVectors representing the access @@ -223,7 +223,7 @@ def __len__(self): """Return the number of unique access vectors in the set. - Because of the inernal representation of the access vector set, + Because of the internal representation of the access vector set, __len__ is not a constant time operation. Worst case is O(N) where N is the number of unique access vectors, but the common case is probably better. @@ -317,7 +317,7 @@ class RoleTypeSet: """A non-overlapping set of role type statements. - This clas allows the incremental addition of role type statements and + This class allows the incremental addition of role type statements and maintains a non-overlapping list of statements. """ def __init__(self): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/sepolgen/src/sepolgen/interfaces.py new/selinux-python-3.0/sepolgen/src/sepolgen/interfaces.py --- old/selinux-python-2.9/sepolgen/src/sepolgen/interfaces.py 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/sepolgen/src/sepolgen/interfaces.py 2019-11-28 13:46:48.000000000 +0100 @@ -33,7 +33,7 @@ class Param: """ - Object representing a paramater for an interface. + Object representing a parameter for an interface. """ def __init__(self): self.__name = "" @@ -66,7 +66,7 @@ # The entries are identical - we're done if type == p.type: return - # Hanldle implicitly typed objects (like process) + # Handle implicitly typed objects (like process) if (type == refpolicy.SRC_TYPE or type == refpolicy.TGT_TYPE) and \ (p.type == refpolicy.TGT_TYPE or p.type == refpolicy.SRC_TYPE): #print name, refpolicy.field_to_str[p.type] @@ -104,9 +104,9 @@ def av_extract_params(av, params): - """Extract the paramaters from an access vector. + """Extract the parameters from an access vector. - Extract the paramaters (in the form $N) from an access + Extract the parameters (in the form $N) from an access vector, storing them as Param objects in a dictionary. Some attempt is made at resolving conflicts with other entries in the dict, but if an unresolvable conflict is @@ -132,7 +132,7 @@ allow fingerd_t $1:process sigchld; ') - Here the usage seems ambigious, but it is not. $1 is still domain + Here the usage seems ambiguous, but it is not. $1 is still domain and therefore should be returned as a SRC_TYPE. Returns: @@ -245,7 +245,7 @@ # this will include indirect access from typeattribute # statements. self.access = access.AccessVectorSet() - # Paramaters are stored in a dictionary (key: param name + # Parameters are stored in a dictionary (key: param name # value: Param object). self.params = { } if interface: @@ -284,13 +284,13 @@ self.add_av(av) - # Extract paramaters from roles + # Extract parameters from roles for role in interface.roles(): if role_extract_params(role, self.params): pass #print "found conflicting role param %s for interface %s" % \ # (role.name, interface.name) - # Extract paramaters from type rules + # Extract parameters from type rules for rule in interface.typerules(): if type_rule_extract_params(rule, self.params): pass diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/sepolgen/src/sepolgen/matching.py new/selinux-python-3.0/sepolgen/src/sepolgen/matching.py --- old/selinux-python-2.9/sepolgen/src/sepolgen/matching.py 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/sepolgen/src/sepolgen/matching.py 2019-11-28 13:46:48.000000000 +0100 @@ -149,7 +149,7 @@ prov - [AccessVector] The access provided. This is the potential match that is being evaluated for req. Returns: - 0 : Exact match between the acess vectors. + 0 : Exact match between the access vectors. < 0 : The prov av does not provide all of the access in req. A smaller value indicates that the access is further. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/sepolgen/src/sepolgen/module.py new/selinux-python-3.0/sepolgen/src/sepolgen/module.py --- old/selinux-python-2.9/sepolgen/src/sepolgen/module.py 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/sepolgen/src/sepolgen/module.py 2019-11-28 13:46:48.000000000 +0100 @@ -95,7 +95,7 @@ module compiler (checkmodule) and module packager (semodule_package). You are likely interested in the create_module_package method. - Several options are controlled via paramaters (only effects the + Several options are controlled via parameters (only effects the non-refpol builds): .mls [boolean] Generate an MLS module (by passed -M to diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/sepolgen/src/sepolgen/objectmodel.py new/selinux-python-3.0/sepolgen/src/sepolgen/objectmodel.py --- old/selinux-python-2.9/sepolgen/src/sepolgen/objectmodel.py 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/sepolgen/src/sepolgen/objectmodel.py 2019-11-28 13:46:48.000000000 +0100 @@ -47,7 +47,7 @@ # All of the permissions in SELinux can be described in terms of # information flow. For example, a read of a file is a flow of # information from that file to the process reading. Viewing -# permissions in these terms can be used to model a varity of +# permissions in these terms can be used to model a variety of # security properties. # # Here we have some infrastructure for understanding permissions @@ -70,7 +70,7 @@ FLOW_WRITE = 2 FLOW_BOTH = FLOW_READ | FLOW_WRITE -# These are used by the parser and for nice disply of the directions +# These are used by the parser and for nice display of the directions str_to_dir = { "n" : FLOW_NONE, "r" : FLOW_READ, "w" : FLOW_WRITE, "b" : FLOW_BOTH } dir_to_str = { FLOW_NONE : "n", FLOW_READ : "r", FLOW_WRITE : "w", FLOW_BOTH : "b" } @@ -106,7 +106,7 @@ """Read the permission mappings from a file. This reads the format used by Apol in the setools suite. """ - # This parsing is deliberitely picky and bails at the least error. It + # This parsing is deliberately picky and bails at the least error. It # is assumed that the permission map file will be shipped as part # of sepolgen and not user modified, so this is a reasonable design # choice. If user supplied permission mappings are needed the parser @@ -124,7 +124,7 @@ cur = self.classes[c] else: if len(fields) != 3: - raise ValueError("error in object classs permissions") + raise ValueError("error in object class permissions") if cur is None: raise ValueError("permission outside of class") pm = PermMap(fields[0], str_to_dir[fields[1]], int(fields[2])) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/sepolgen/src/sepolgen/policygen.py new/selinux-python-3.0/sepolgen/src/sepolgen/policygen.py --- old/selinux-python-2.9/sepolgen/src/sepolgen/policygen.py 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/sepolgen/src/sepolgen/policygen.py 2019-11-28 13:46:48.000000000 +0100 @@ -54,7 +54,7 @@ permission access vector rules. By default only allow rules are generated. The methods .set_gen_refpol, .set_gen_requires and .set_gen_xperms turns on interface generation, - requires generation, and xperms rules genration respectively. + requires generation, and xperms rules generation respectively. PolicyGenerator can also optionally add comments explaining why a particular access was allowed based on the audit @@ -70,7 +70,7 @@ """Initialize a PolicyGenerator with an optional existing module. - If the module paramater is not None then access + If the module parameter is not None then access will be added to the passed in module. Otherwise a new reference policy module will be created. """ @@ -339,7 +339,7 @@ def hack_check_ifs(self, ifs): # FIXME: Disable interfaces we can't call - this is a hack. - # Because we don't handle roles, multiple paramaters, etc., + # Because we don't handle roles, multiple parameters, etc., # etc., we must make certain we can actually use a returned # interface. for x in ifs.interfaces.values(): @@ -347,7 +347,7 @@ params.extend(x.params.values()) params.sort(key=lambda param: param.num, reverse=True) for i in range(len(params)): - # Check that the paramater position matches + # Check that the parameter position matches # the number (e.g., $1 is the first arg). This # will fail if the parser missed something. if (i + 1) != params[i].num: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/sepolgen/src/sepolgen/refparser.py new/selinux-python-3.0/sepolgen/src/sepolgen/refparser.py --- old/selinux-python-2.9/sepolgen/src/sepolgen/refparser.py 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/sepolgen/src/sepolgen/refparser.py 2019-11-28 13:46:48.000000000 +0100 @@ -207,7 +207,7 @@ t_SQUOTE = r'\'' t_OBRACE = r'\{' t_CBRACE = r'\}' -# This will handle spurios extra ';' via the + +# This will handle spurious extra ';' via the + t_SEMI = r'\;+' t_COLON = r'\:' t_OPAREN = r'\(' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/sepolgen/src/sepolgen/refpolicy.py new/selinux-python-3.0/sepolgen/src/sepolgen/refpolicy.py --- old/selinux-python-2.9/sepolgen/src/sepolgen/refpolicy.py 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/sepolgen/src/sepolgen/refpolicy.py 2019-11-28 13:46:48.000000000 +0100 @@ -177,7 +177,7 @@ The walktree function iterates over a tree containing Nodes and leaf objects. The iteration can perform a depth first or a breadth first traversal of the tree (controlled by the depthfirst - paramater. The passed in node will be returned. + parameter. The passed in node will be returned. This function will only work correctly for trees - arbitrary graphs will likely cause infinite looping. @@ -242,7 +242,7 @@ def list_to_comma_str(s): l = len(s) if l < 1: - raise ValueError("cannot conver 0 len set to comma string") + raise ValueError("cannot convert 0 len set to comma string") return ", ".join(s) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/sepolgen/src/sepolgen/util.py new/selinux-python-3.0/sepolgen/src/sepolgen/util.py --- old/selinux-python-2.9/sepolgen/src/sepolgen/util.py 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/sepolgen/src/sepolgen/util.py 2019-11-28 13:46:48.000000000 +0100 @@ -79,8 +79,8 @@ Otherwise a random element will be returned (as sets are not ordered). """ if not len(s): - raise IndexError("empty containter") - + raise IndexError("empty container") + if sorted: l = set_to_list(s) l.sort() @@ -119,7 +119,7 @@ """Class used when implementing rich comparison. Inherit from this class if you want to have a rich - comparison withing the class, afterwards implement + comparison within the class, afterwards implement _compare function within your class.""" def _compare(self, other, method): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/sepolgen/tests/test_refpolicy.py new/selinux-python-3.0/sepolgen/tests/test_refpolicy.py --- old/selinux-python-2.9/sepolgen/tests/test_refpolicy.py 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/sepolgen/tests/test_refpolicy.py 2019-11-28 13:46:48.000000000 +0100 @@ -36,7 +36,7 @@ class TestXpermSet(unittest.TestCase): def test_init(self): - """ Test that all atttributes are correctly initialized. """ + """ Test that all attributes are correctly initialized. """ s1 = refpolicy.XpermSet() self.assertEqual(s1.complement, False) self.assertEqual(s1.ranges, []) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/sepolicy/sepolicy/__init__.py new/selinux-python-3.0/sepolicy/sepolicy/__init__.py --- old/selinux-python-2.9/sepolicy/sepolicy/__init__.py 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/sepolicy/sepolicy/__init__.py 2019-11-28 13:46:48.000000000 +0100 @@ -539,7 +539,6 @@ path += "/" except IndexError: print("try failed got an IndexError") - pass try: pat = re.compile(r"%s$" % reg) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/sepolicy/sepolicy/booleans.py new/selinux-python-3.0/sepolicy/sepolicy/booleans.py --- old/selinux-python-2.9/sepolicy/sepolicy/booleans.py 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/sepolicy/sepolicy/booleans.py 2019-11-28 13:46:48.000000000 +0100 @@ -1,7 +1,7 @@ # Copyright (C) 2012 Red Hat # see file 'COPYING' for use and warranty information # -# setrans is a tool for analyzing process transistions in SELinux policy +# setrans is a tool for analyzing process transitions in SELinux policy # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/sepolicy/sepolicy/communicate.py new/selinux-python-3.0/sepolicy/sepolicy/communicate.py --- old/selinux-python-2.9/sepolicy/sepolicy/communicate.py 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/sepolicy/sepolicy/communicate.py 2019-11-28 13:46:48.000000000 +0100 @@ -1,7 +1,7 @@ # Copyright (C) 2012 Red Hat # see file 'COPYING' for use and warranty information # -# setrans is a tool for analyzing process transistions in SELinux policy +# setrans is a tool for analyzing process transitions in SELinux policy # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/sepolicy/sepolicy/generate.py new/selinux-python-3.0/sepolicy/sepolicy/generate.py --- old/selinux-python-2.9/sepolicy/sepolicy/generate.py 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/sepolicy/sepolicy/generate.py 2019-11-28 13:46:48.000000000 +0100 @@ -26,7 +26,6 @@ import sepolicy from sepolicy import get_all_types, get_all_attributes, get_all_roles import time -import platform from .templates import executable from .templates import boolean @@ -341,7 +340,7 @@ (self.generate_root_user_types, self.generate_root_user_rules), (self.generate_new_types, self.generate_new_rules)) if not re.match(r"^[a-zA-Z0-9-_]+$", name): - raise ValueError(_("Name must be alpha numberic with no spaces. Consider using option \"-n MODULENAME\"")) + raise ValueError(_("Name must be alpha numeric with no spaces. Consider using option \"-n MODULENAME\"")) if type == CGI: self.name = "httpd_%s_script" % name @@ -1178,8 +1177,7 @@ newsh += re.sub("TEMPLATETYPE", self.name, t1) newsh += self.generate_user_sh() - if (platform.linux_distribution(full_distribution_name=0)[0] in ("redhat", "centos", "SuSE", "fedora", "mandrake", "mandriva")): - newsh += re.sub("TEMPLATEFILE", self.file_name, script.rpm) + newsh += re.sub("TEMPLATEFILE", self.file_name, script.rpm) return newsh @@ -1379,7 +1377,6 @@ out += "%s # %s\n" % (self.write_if(out_dir), _("Interface file")) out += "%s # %s\n" % (self.write_fc(out_dir), _("File Contexts file")) if self.type != NEWTYPE: - if (platform.linux_distribution(full_distribution_name=0)[0] in ("redhat", "centos", "SuSE", "fedora", "mandrake", "mandriva")): - out += "%s # %s\n" % (self.write_spec(out_dir), _("Spec file")) + out += "%s # %s\n" % (self.write_spec(out_dir), _("Spec file")) out += "%s # %s\n" % (self.write_sh(out_dir), _("Setup Script")) return out diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/sepolicy/sepolicy/gui.py new/selinux-python-3.0/sepolicy/sepolicy/gui.py --- old/selinux-python-2.9/sepolicy/sepolicy/gui.py 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/sepolicy/sepolicy/gui.py 2019-11-28 13:46:48.000000000 +0100 @@ -1023,7 +1023,7 @@ self.delete_button.set_sensitive(True) # Clear the tree to prepare for a new selection otherwise self.executable_files_liststore.clear() - # data will pile up everytime the user selects a new item from the drop down menu + # data will pile up every time the user selects a new item from the drop down menu self.network_in_liststore.clear() self.network_out_liststore.clear() self.boolean_liststore.clear() @@ -1894,7 +1894,7 @@ tree.set_value(iter, 2, fclass) def restore_to_default(self, *args): - print("restore to defualt clicked...") + print("restore to default clicked...") def invalid_entry_retry(self, *args): self.closewindow(self.error_check_window) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/sepolicy/sepolicy/interface.py new/selinux-python-3.0/sepolicy/sepolicy/interface.py --- old/selinux-python-2.9/sepolicy/sepolicy/interface.py 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/sepolicy/sepolicy/interface.py 2019-11-28 13:46:48.000000000 +0100 @@ -196,7 +196,7 @@ from subprocess import getstatusoutput basedir = os.path.dirname(if_file) + "/" filename = os.path.basename(if_file).split(".")[0] - rc, output = getstatusoutput("python /usr/share/selinux/devel/include/support/segenxml.py -w -m %s" % basedir + filename) + rc, output = getstatusoutput("/usr/bin/python3 /usr/share/selinux/devel/include/support/segenxml.py -w -m %s" % (basedir + filename)) if rc != 0: sys.stderr.write("\n Could not proceed selected interface file.\n") sys.stderr.write("\n%s" % output) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/sepolicy/sepolicy/manpage.py new/selinux-python-3.0/sepolicy/sepolicy/manpage.py --- old/selinux-python-2.9/sepolicy/sepolicy/manpage.py 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/sepolicy/sepolicy/manpage.py 2019-11-28 13:46:48.000000000 +0100 @@ -782,7 +782,7 @@ for e in equiv: self.fd.write(r""" .PP -%(domainname)s policy stores data with multiple different file context types under the %(equiv)s directory. If you would like to store the data in a different directory you can use the semanage command to create an equivalence mapping. If you wanted to store this data under the /srv dirctory you would execute the following command: +%(domainname)s policy stores data with multiple different file context types under the %(equiv)s directory. If you would like to store the data in a different directory you can use the semanage command to create an equivalence mapping. If you wanted to store this data under the /srv directory you would execute the following command: .PP .B semanage fcontext -a -e %(equiv)s /srv/%(alt)s .br @@ -962,7 +962,7 @@ if "bin_t" in entrypoints: entrypoints.remove("bin_t") self.fd.write(""" -All executeables with the default executable label, usually stored in /usr/bin and /usr/sbin.""") +All executables with the default executable label, usually stored in /usr/bin and /usr/sbin.""") paths = [] for entrypoint in entrypoints: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/sepolicy/sepolicy/network.py new/selinux-python-3.0/sepolicy/sepolicy/network.py --- old/selinux-python-2.9/sepolicy/sepolicy/network.py 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/sepolicy/sepolicy/network.py 2019-11-28 13:46:48.000000000 +0100 @@ -1,7 +1,7 @@ # Copyright (C) 2012 Red Hat # see file 'COPYING' for use and warranty information # -# setrans is a tool for analyzing process transistions in SELinux policy +# setrans is a tool for analyzing process transitions in SELinux policy # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/sepolicy/sepolicy/transition.py new/selinux-python-3.0/sepolicy/sepolicy/transition.py --- old/selinux-python-2.9/sepolicy/sepolicy/transition.py 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/sepolicy/sepolicy/transition.py 2019-11-28 13:46:48.000000000 +0100 @@ -1,7 +1,7 @@ # Copyright (C) 2011 Red Hat # see file 'COPYING' for use and warranty information # -# setrans is a tool for analyzing process transistions in SELinux policy +# setrans is a tool for analyzing process transitions in SELinux policy # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/sepolicy/sepolicy.py new/selinux-python-3.0/sepolicy/sepolicy.py --- old/selinux-python-2.9/sepolicy/sepolicy.py 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/sepolicy/sepolicy.py 2019-11-28 13:46:48.000000000 +0100 @@ -25,6 +25,7 @@ import sys import selinux import sepolicy +from multiprocessing import Pool from sepolicy import get_os_version, get_conditionals, get_conditionals_format_text import argparse PROGNAME = "policycoreutils" @@ -326,8 +327,13 @@ gui.set_defaults(func=gui_run) +def manpage_work(domain, path, root, source_files, web): + from sepolicy.manpage import ManPage + m = ManPage(domain, path, root, source_files, web) + print(m.get_man_page_path()) + def manpage(args): - from sepolicy.manpage import ManPage, HTMLManPages, manpage_domains, manpage_roles, gen_domains + from sepolicy.manpage import HTMLManPages, manpage_domains, manpage_roles, gen_domains path = args.path if not args.policy and args.root != "/": @@ -340,9 +346,11 @@ else: test_domains = args.domain + p = Pool() for domain in test_domains: - m = ManPage(domain, path, args.root, args.source_files, args.web) - print(m.get_man_page_path()) + p.apply_async(manpage_work, [domain, path, args.root, args.source_files, args.web]) + p.close() + p.join() if args.web: HTMLManPages(manpage_roles, manpage_domains, path, args.os) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-python-2.9/sepolicy/setup.py new/selinux-python-3.0/sepolicy/setup.py --- old/selinux-python-2.9/sepolicy/setup.py 2019-03-15 11:32:30.000000000 +0100 +++ new/selinux-python-3.0/sepolicy/setup.py 2019-11-28 13:46:48.000000000 +0100 @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/python3 # Author: Thomas Liu <t...@redhat.com> # Author: Dan Walsh <dwa...@redhat.com> @@ -6,7 +6,7 @@ setup( name="sepolicy", - version="1.1", + version="3.0", description="Python SELinux Policy Analyses bindings", author="Daniel Walsh", author_email="dwa...@redhat.com", ++++++ semodule-utils-2.9.tar.gz -> semodule-utils-3.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semodule-utils-2.9/VERSION new/semodule-utils-3.0/VERSION --- old/semodule-utils-2.9/VERSION 2019-03-15 11:32:30.000000000 +0100 +++ new/semodule-utils-3.0/VERSION 2019-11-28 13:46:48.000000000 +0100 @@ -1 +1 @@ -2.9 +3.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semodule-utils-2.9/semodule_package/semodule_unpackage.c new/semodule-utils-3.0/semodule_package/semodule_unpackage.c --- old/semodule-utils-2.9/semodule_package/semodule_unpackage.c 2019-03-15 11:32:30.000000000 +0100 +++ new/semodule-utils-3.0/semodule_package/semodule_unpackage.c 2019-11-28 13:46:48.000000000 +0100 @@ -55,7 +55,7 @@ ppfile = argv[1]; modfile = argv[2]; - if (argc >= 3) + if (argc >= 4) fcfile = argv[3]; if (file_to_policy_file(ppfile, &in, "r"))