diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cf49f0f --- /dev/null +++ b/.gitignore @@ -0,0 +1,14 @@ +SOURCES/gui-po.tgz +SOURCES/policycoreutils-2.8.tar.gz +SOURCES/policycoreutils-po.tgz +SOURCES/policycoreutils_man_ru2.tar.bz2 +SOURCES/python-po.tgz +SOURCES/restorecond-2.8.tar.gz +SOURCES/sandbox-po.tgz +SOURCES/selinux-dbus-2.8.tar.gz +SOURCES/selinux-gui-2.8.tar.gz +SOURCES/selinux-python-2.8.tar.gz +SOURCES/selinux-sandbox-2.8.tar.gz +SOURCES/semodule-utils-2.8.tar.gz +SOURCES/sepolicy-icons.tgz +SOURCES/system-config-selinux.png diff --git a/.policycoreutils.metadata b/.policycoreutils.metadata new file mode 100644 index 0000000..81ecb45 --- /dev/null +++ b/.policycoreutils.metadata @@ -0,0 +1,14 @@ +b65686d84acd60d522c8721d38f938a75e25a4cc SOURCES/gui-po.tgz +fed6a10a3205f8dbc12fd1ae40821e7f7b1d92b0 SOURCES/policycoreutils-2.8.tar.gz +7288a10d135a7b1d72e4fdb1a7d757b56ec33975 SOURCES/policycoreutils-po.tgz +be6e4cb77bb89b98ecb246f03780389b30646198 SOURCES/policycoreutils_man_ru2.tar.bz2 +ea880063f39c78e6d1c8262392a16493b3f20a04 SOURCES/python-po.tgz +3b73350c485a5a9d2a1a133c8b6b180f6a792b37 SOURCES/restorecond-2.8.tar.gz +14c9fff2633cf4a73e37909a8c3be08e323b61a8 SOURCES/sandbox-po.tgz +20b0df570e1a83946068652eb6ebda07e9d58795 SOURCES/selinux-dbus-2.8.tar.gz +4ea6ec0827feafe752d8af30db256fe25eff757e SOURCES/selinux-gui-2.8.tar.gz +977e0f569970cb243851381b6fbe9efad60eeee4 SOURCES/selinux-python-2.8.tar.gz +f782ccff747552ea0baec1cd4e8f4a2ae12a7488 SOURCES/selinux-sandbox-2.8.tar.gz +62cc0f1d4a6f61260d5ec5015d31d12b44aa522b SOURCES/semodule-utils-2.8.tar.gz +d849fa76cc3ef4a26047d8a69fef3a55d2f3097f SOURCES/sepolicy-icons.tgz +611a5d497efaddd45ec0dcc3e9b2e5b0f81ebc41 SOURCES/system-config-selinux.png diff --git a/SOURCES/policycoreutils-fedora.patch b/SOURCES/policycoreutils-fedora.patch new file mode 100644 index 0000000..d7d40a5 --- /dev/null +++ b/SOURCES/policycoreutils-fedora.patch @@ -0,0 +1,152 @@ +diff --git policycoreutils-2.8/newrole/newrole.1 policycoreutils-2.8/newrole/newrole.1 +index 0d9738a..893c42f 100644 +--- policycoreutils-2.8/newrole/newrole.1 ++++ policycoreutils-2.8/newrole/newrole.1 +@@ -44,7 +44,7 @@ specified by that range. If the + or + .B --preserve-environment + option is specified, the shell with the new SELinux context will preserve environment variables, +-otherwise a new minimal enviroment is created. ++otherwise a new minimal environment is created. + .PP + Additional arguments + .I ARGS +diff --git policycoreutils-2.8/po/Makefile policycoreutils-2.8/po/Makefile +index 575e143..18bc1df 100644 +--- policycoreutils-2.8/po/Makefile ++++ policycoreutils-2.8/po/Makefile +@@ -3,7 +3,6 @@ + # + + PREFIX ?= /usr +-TOP = ../.. + + # What is this package? + NLSPACKAGE = policycoreutils +@@ -32,74 +31,13 @@ USE_LINGUAS := $(if $(USER_LINGUAS),$(USER_LINGUAS),$(PO_LINGUAS)) + + POFILES = $(patsubst %,%.po,$(USE_LINGUAS)) + MOFILES = $(patsubst %.po,%.mo,$(POFILES)) +-POTFILES = \ +- ../run_init/open_init_pty.c \ +- ../run_init/run_init.c \ +- ../semodule_link/semodule_link.c \ +- ../audit2allow/audit2allow \ +- ../semanage/seobject.py \ +- ../setsebool/setsebool.c \ +- ../newrole/newrole.c \ +- ../load_policy/load_policy.c \ +- ../sestatus/sestatus.c \ +- ../semodule/semodule.c \ +- ../setfiles/setfiles.c \ +- ../semodule_package/semodule_package.c \ +- ../semodule_deps/semodule_deps.c \ +- ../semodule_expand/semodule_expand.c \ +- ../scripts/chcat \ +- ../scripts/fixfiles \ +- ../restorecond/stringslist.c \ +- ../restorecond/restorecond.h \ +- ../restorecond/utmpwatcher.h \ +- ../restorecond/stringslist.h \ +- ../restorecond/restorecond.c \ +- ../restorecond/utmpwatcher.c \ +- ../gui/booleansPage.py \ +- ../gui/fcontextPage.py \ +- ../gui/loginsPage.py \ +- ../gui/mappingsPage.py \ +- ../gui/modulesPage.py \ +- ../gui/polgen.glade \ +- ../gui/polgengui.py \ +- ../gui/portsPage.py \ +- ../gui/semanagePage.py \ +- ../gui/statusPage.py \ +- ../gui/system-config-selinux.glade \ +- ../gui/system-config-selinux.py \ +- ../gui/usersPage.py \ +- ../secon/secon.c \ +- booleans.py \ +- ../sepolicy/sepolicy.py \ +- ../sepolicy/sepolicy/communicate.py \ +- ../sepolicy/sepolicy/__init__.py \ +- ../sepolicy/sepolicy/network.py \ +- ../sepolicy/sepolicy/generate.py \ +- ../sepolicy/sepolicy/sepolicy.glade \ +- ../sepolicy/sepolicy/gui.py \ +- ../sepolicy/sepolicy/manpage.py \ +- ../sepolicy/sepolicy/transition.py \ +- ../sepolicy/sepolicy/templates/executable.py \ +- ../sepolicy/sepolicy/templates/__init__.py \ +- ../sepolicy/sepolicy/templates/network.py \ +- ../sepolicy/sepolicy/templates/rw.py \ +- ../sepolicy/sepolicy/templates/script.py \ +- ../sepolicy/sepolicy/templates/semodule.py \ +- ../sepolicy/sepolicy/templates/tmp.py \ +- ../sepolicy/sepolicy/templates/user.py \ +- ../sepolicy/sepolicy/templates/var_lib.py \ +- ../sepolicy/sepolicy/templates/var_log.py \ +- ../sepolicy/sepolicy/templates/var_run.py \ +- ../sepolicy/sepolicy/templates/var_spool.py ++POTFILES = $(shell cat POTFILES) + + #default:: clean + +-all:: $(MOFILES) ++all:: $(POTFILE) $(MOFILES) + +-booleans.py: +- sepolicy booleans -a > booleans.py +- +-$(POTFILE): $(POTFILES) booleans.py ++$(POTFILE): $(POTFILES) + $(XGETTEXT) --keyword=_ --keyword=N_ $(POTFILES) + @if cmp -s $(NLSPACKAGE).po $(POTFILE); then \ + rm -f $(NLSPACKAGE).po; \ +@@ -107,8 +45,6 @@ $(POTFILE): $(POTFILES) booleans.py + mv -f $(NLSPACKAGE).po $(POTFILE); \ + fi; \ + +-update-po: Makefile $(POTFILE) refresh-po +- @rm -f booleans.py + + refresh-po: Makefile + for cat in $(POFILES); do \ +diff --git policycoreutils-2.8/po/POTFILES policycoreutils-2.8/po/POTFILES +new file mode 100644 +index 0000000..12237dc +--- /dev/null ++++ policycoreutils-2.8/po/POTFILES +@@ -0,0 +1,9 @@ ++../run_init/open_init_pty.c ++../run_init/run_init.c ++../setsebool/setsebool.c ++../newrole/newrole.c ++../load_policy/load_policy.c ++../sestatus/sestatus.c ++../semodule/semodule.c ++../setfiles/setfiles.c ++../secon/secon.c +diff --git policycoreutils-2.8/scripts/fixfiles policycoreutils-2.8/scripts/fixfiles +index b277958..53d28c7 100755 +--- policycoreutils-2.8/scripts/fixfiles ++++ policycoreutils-2.8/scripts/fixfiles +@@ -108,6 +108,7 @@ exclude_dirs_from_relabelling() { + fullFlag=0 + BOOTTIME="" + VERBOSE="-p" ++[ -t 1 ] || VERBOSE="" + FORCEFLAG="" + RPMFILES="" + PREFC="" +diff --git policycoreutils-2.8/setfiles/setfiles.8 policycoreutils-2.8/setfiles/setfiles.8 +index ccaaf4d..a8a76c8 100644 +--- policycoreutils-2.8/setfiles/setfiles.8 ++++ policycoreutils-2.8/setfiles/setfiles.8 +@@ -57,7 +57,7 @@ check the validity of the contexts against the specified binary policy. + .TP + .B \-d + show what specification matched each file (do not abort validation +-after ABORT_ON_ERRORS errors). ++after ABORT_ON_ERRORS errors). Not affected by "\-q" + .TP + .BI \-e \ directory + directory to exclude (repeat option for more than one directory). diff --git a/SOURCES/restorecond-fedora.patch b/SOURCES/restorecond-fedora.patch new file mode 100644 index 0000000..e386f21 --- /dev/null +++ b/SOURCES/restorecond-fedora.patch @@ -0,0 +1,12 @@ +diff --git restorecond-2.8/restorecond.c restorecond-2.8/restorecond.c +index 6fbbd35..e1d26cb 100644 +--- restorecond-2.8/restorecond.c ++++ restorecond-2.8/restorecond.c +@@ -105,6 +105,7 @@ static int write_pid_file(void) + } + if (write(pidfd, val, (unsigned int)len) != len) { + syslog(LOG_ERR, "Unable to write to pidfile (%s)", strerror(errno)); ++ close(pidfd); + return 1; + } + close(pidfd); diff --git a/SOURCES/selinux-autorelabel b/SOURCES/selinux-autorelabel new file mode 100755 index 0000000..22c2143 --- /dev/null +++ b/SOURCES/selinux-autorelabel @@ -0,0 +1,73 @@ +#!/bin/bash +# +# Do automatic relabelling +# + +# . /etc/init.d/functions + +# If the user has this (or similar) UEFI boot order: +# +# Windows | grub | Linux +# +# And decides to boot into grub/Linux, then the reboot at the end of autorelabel +# would cause the system to boot into Windows again, if the autorelabel was run. +# +# This function restores the UEFI boot order, so the user will boot into the +# previously set (and expected) partition. +efi_set_boot_next() { + # NOTE: The [ -x /usr/sbin/efibootmgr ] test is not sufficent -- it could + # succeed even on system which is not EFI-enabled... + if ! efibootmgr > /dev/null 2>&1; then + return + fi + + # NOTE: It it possible that some other services might be setting the + # 'BootNext' item for any reasons, and we shouldn't override it if so. + if ! efibootmgr | grep --quiet -e 'BootNext'; then + CURRENT_BOOT="$(efibootmgr | grep -e 'BootCurrent' | sed -re 's/(^.+:[[:space:]]*)([[:xdigit:]]+)/\2/')" + efibootmgr -n "${CURRENT_BOOT}" > /dev/null 2>&1 + fi +} + +relabel_selinux() { + # if /sbin/init is not labeled correctly this process is running in the + # wrong context, so a reboot will be required after relabel + AUTORELABEL= + . /etc/selinux/config + echo "0" > /sys/fs/selinux/enforce + [ -x /bin/plymouth ] && plymouth --quit + + if [ "$AUTORELABEL" = "0" ]; then + echo + echo $"*** Warning -- SELinux ${SELINUXTYPE} policy relabel is required. " + echo $"*** /etc/selinux/config indicates you want to manually fix labeling" + echo $"*** problems. Dropping you to a shell; the system will reboot" + echo $"*** when you leave the shell." + sulogin + + else + echo + echo $"*** Warning -- SELinux ${SELINUXTYPE} policy relabel is required." + echo $"*** Relabeling could take a very long time, depending on file" + echo $"*** system size and speed of hard drives." + + FORCE=`cat /.autorelabel` + [ -x "/usr/sbin/quotaoff" ] && /usr/sbin/quotaoff -aug + /sbin/fixfiles $FORCE restore + fi + + rm -f /.autorelabel + /usr/lib/dracut/dracut-initramfs-restore + efi_set_boot_next + if [ -x /usr/bin/grub2-editenv ]; then + grub2-editenv - incr boot_indeterminate >/dev/null 2>&1 + fi + sync + systemctl --force reboot +} + +# Check to see if a full relabel is needed +if [ "$READONLY" != "yes" ]; then + restorecon $(awk '!/^#/ && $4 !~ /noauto/ && $2 ~ /^\// { print $2 }' /etc/fstab) >/dev/null 2>&1 + relabel_selinux +fi diff --git a/SOURCES/selinux-autorelabel-generator.sh b/SOURCES/selinux-autorelabel-generator.sh new file mode 100644 index 0000000..be60487 --- /dev/null +++ b/SOURCES/selinux-autorelabel-generator.sh @@ -0,0 +1,29 @@ +#!/bin/sh + +# This systemd.generator(7) detects if SELinux is running and if the +# user requested an autorelabel, and if so sets the default target to +# selinux-autorelabel.target, which will cause the filesystem to be +# relabelled and then the system will reboot again and boot into the +# real default target. + +PATH=/usr/sbin:$PATH +unitdir=/usr/lib/systemd/system + +# If invoked with no arguments (for testing) write to /tmp. +earlydir="/tmp" +if [ -n "$2" ]; then + earlydir="$2" +fi + +set_target () +{ + ln -sf "$unitdir/selinux-autorelabel.target" "$earlydir/default.target" +} + +if selinuxenabled; then + if test -f /.autorelabel; then + set_target + elif grep -sqE "\bautorelabel\b" /proc/cmdline; then + set_target + fi +fi diff --git a/SOURCES/selinux-autorelabel-mark.service b/SOURCES/selinux-autorelabel-mark.service new file mode 100644 index 0000000..dc17df3 --- /dev/null +++ b/SOURCES/selinux-autorelabel-mark.service @@ -0,0 +1,18 @@ +[Unit] +Description=Mark the need to relabel after reboot +DefaultDependencies=no +Requires=local-fs.target +Conflicts=shutdown.target +After=local-fs.target +Before=sysinit.target shutdown.target +ConditionSecurity=!selinux +ConditionPathIsDirectory=/etc/selinux +ConditionPathExists=!/.autorelabel + +[Service] +ExecStart=-/bin/touch /.autorelabel +Type=oneshot +RemainAfterExit=yes + +[Install] +WantedBy=sysinit.target diff --git a/SOURCES/selinux-autorelabel.service b/SOURCES/selinux-autorelabel.service new file mode 100644 index 0000000..b8461e6 --- /dev/null +++ b/SOURCES/selinux-autorelabel.service @@ -0,0 +1,14 @@ +[Unit] +Description=Relabel all filesystems +DefaultDependencies=no +Conflicts=shutdown.target +After=sysinit.target +Before=shutdown.target +ConditionSecurity=selinux + +[Service] +ExecStart=/usr/libexec/selinux/selinux-autorelabel +Type=oneshot +TimeoutSec=0 +RemainAfterExit=yes +StandardInput=tty diff --git a/SOURCES/selinux-autorelabel.target b/SOURCES/selinux-autorelabel.target new file mode 100644 index 0000000..a4f63ab --- /dev/null +++ b/SOURCES/selinux-autorelabel.target @@ -0,0 +1,7 @@ +[Unit] +Description=Relabel all filesystems and reboot +DefaultDependencies=no +Requires=sysinit.target selinux-autorelabel.service +Conflicts=shutdown.target +After=sysinit.target selinux-autorelabel.service +ConditionSecurity=selinux diff --git a/SOURCES/selinux-dbus-fedora.patch b/SOURCES/selinux-dbus-fedora.patch new file mode 100644 index 0000000..28e4cc2 --- /dev/null +++ b/SOURCES/selinux-dbus-fedora.patch @@ -0,0 +1,35 @@ +diff --git selinux-dbus-2.8/org.selinux.conf selinux-dbus-2.8/org.selinux.conf +index a350978..1ae079d 100644 +--- selinux-dbus-2.8/org.selinux.conf ++++ selinux-dbus-2.8/org.selinux.conf +@@ -12,12 +12,8 @@ + + +- +- +- + +- ++ + + + +diff --git selinux-dbus-2.8/org.selinux.policy selinux-dbus-2.8/org.selinux.policy +index 0126610..9772127 100644 +--- selinux-dbus-2.8/org.selinux.policy ++++ selinux-dbus-2.8/org.selinux.policy +@@ -70,9 +70,9 @@ + auth_admin_keep + + +- +- SELinux write access +- System policy prevents change_policy_type access to SELinux ++ ++ Change SELinux default enforcing mode ++ System policy prevents change_default_policy access to SELinux + + no + no diff --git a/SOURCES/selinux-gui-fedora.patch b/SOURCES/selinux-gui-fedora.patch new file mode 100644 index 0000000..9b9982f --- /dev/null +++ b/SOURCES/selinux-gui-fedora.patch @@ -0,0 +1,306 @@ +diff --git selinux-gui-2.8/Makefile selinux-gui-2.8/Makefile +index a72e58c..ffe8b97 100644 +--- selinux-gui-2.8/Makefile ++++ selinux-gui-2.8/Makefile +@@ -21,6 +21,7 @@ system-config-selinux.ui \ + usersPage.py + + all: $(TARGETS) system-config-selinux.py polgengui.py ++ (cd po && $(MAKE) $@) + + install: all + -mkdir -p $(DESTDIR)$(MANDIR)/man8 +@@ -46,6 +47,8 @@ install: all + install -m 644 sepolicy_$${i}.png $(DESTDIR)$(DATADIR)/icons/hicolor/$${i}x$${i}/apps/sepolicy.png; \ + done + install -m 644 org.selinux.config.policy $(DESTDIR)$(DATADIR)/polkit-1/actions/ ++ (cd po && $(MAKE) $@) ++ + clean: + + indent: +diff --git selinux-gui-2.8/booleansPage.py selinux-gui-2.8/booleansPage.py +index 7849bea..dd12b6d 100644 +--- selinux-gui-2.8/booleansPage.py ++++ selinux-gui-2.8/booleansPage.py +@@ -38,7 +38,7 @@ DISABLED = 2 + ## + ## I18N + ## +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-gui" + try: + import gettext + kwargs = {} +diff --git selinux-gui-2.8/domainsPage.py selinux-gui-2.8/domainsPage.py +index bad5140..6bbe4de 100644 +--- selinux-gui-2.8/domainsPage.py ++++ selinux-gui-2.8/domainsPage.py +@@ -30,7 +30,7 @@ from semanagePage import * + ## + ## I18N + ## +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-gui" + try: + import gettext + kwargs = {} +diff --git selinux-gui-2.8/fcontextPage.py selinux-gui-2.8/fcontextPage.py +index 370bbee..e424366 100644 +--- selinux-gui-2.8/fcontextPage.py ++++ selinux-gui-2.8/fcontextPage.py +@@ -47,7 +47,7 @@ class context: + ## + ## I18N + ## +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-gui" + try: + import gettext + kwargs = {} +diff --git selinux-gui-2.8/loginsPage.py selinux-gui-2.8/loginsPage.py +index b67eb8b..cbfb0cc 100644 +--- selinux-gui-2.8/loginsPage.py ++++ selinux-gui-2.8/loginsPage.py +@@ -29,7 +29,7 @@ from semanagePage import * + ## + ## I18N + ## +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-gui" + try: + import gettext + kwargs = {} +diff --git selinux-gui-2.8/modulesPage.py selinux-gui-2.8/modulesPage.py +index 34c5d9e..627ad95 100644 +--- selinux-gui-2.8/modulesPage.py ++++ selinux-gui-2.8/modulesPage.py +@@ -30,7 +30,7 @@ from semanagePage import * + ## + ## I18N + ## +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-gui" + try: + import gettext + kwargs = {} +diff --git selinux-gui-2.8/po/Makefile selinux-gui-2.8/po/Makefile +new file mode 100644 +index 0000000..a0f5439 +--- /dev/null ++++ selinux-gui-2.8/po/Makefile +@@ -0,0 +1,82 @@ ++# ++# Makefile for the PO files (translation) catalog ++# ++ ++PREFIX ?= /usr ++ ++# What is this package? ++NLSPACKAGE = gui ++POTFILE = $(NLSPACKAGE).pot ++INSTALL = /usr/bin/install -c -p ++INSTALL_DATA = $(INSTALL) -m 644 ++INSTALL_DIR = /usr/bin/install -d ++ ++# destination directory ++INSTALL_NLS_DIR = $(PREFIX)/share/locale ++ ++# PO catalog handling ++MSGMERGE = msgmerge ++MSGMERGE_FLAGS = -q ++XGETTEXT = xgettext --default-domain=$(NLSPACKAGE) ++MSGFMT = msgfmt ++ ++# All possible linguas ++PO_LINGUAS := $(sort $(patsubst %.po,%,$(wildcard *.po))) ++ ++# Only the files matching what the user has set in LINGUAS ++USER_LINGUAS := $(filter $(patsubst %,%%,$(LINGUAS)),$(PO_LINGUAS)) ++ ++# if no valid LINGUAS, build all languages ++USE_LINGUAS := $(if $(USER_LINGUAS),$(USER_LINGUAS),$(PO_LINGUAS)) ++ ++POFILES = $(patsubst %,%.po,$(USE_LINGUAS)) ++MOFILES = $(patsubst %.po,%.mo,$(POFILES)) ++POTFILES = $(shell cat POTFILES) ++ ++#default:: clean ++ ++all:: $(MOFILES) ++ ++$(POTFILE): $(POTFILES) ++ $(XGETTEXT) --keyword=_ --keyword=N_ $(POTFILES) ++ @if cmp -s $(NLSPACKAGE).po $(POTFILE); then \ ++ rm -f $(NLSPACKAGE).po; \ ++ else \ ++ mv -f $(NLSPACKAGE).po $(POTFILE); \ ++ fi; \ ++ ++ ++refresh-po: Makefile ++ for cat in $(POFILES); do \ ++ lang=`basename $$cat .po`; \ ++ if $(MSGMERGE) $(MSGMERGE_FLAGS) $$lang.po $(POTFILE) > $$lang.pot ; then \ ++ mv -f $$lang.pot $$lang.po ; \ ++ echo "$(MSGMERGE) of $$lang succeeded" ; \ ++ else \ ++ echo "$(MSGMERGE) of $$lang failed" ; \ ++ rm -f $$lang.pot ; \ ++ fi \ ++ done ++ ++clean: ++ @rm -fv *mo *~ .depend ++ @rm -rf tmp ++ ++install: $(MOFILES) ++ @for n in $(MOFILES); do \ ++ l=`basename $$n .mo`; \ ++ $(INSTALL_DIR) $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES; \ ++ $(INSTALL_DATA) --verbose $$n $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES/selinux-$(NLSPACKAGE).mo; \ ++ done ++ ++%.mo: %.po ++ $(MSGFMT) -o $@ $< ++report: ++ @for cat in $(wildcard *.po); do \ ++ echo -n "$$cat: "; \ ++ msgfmt -v --statistics -o /dev/null $$cat; \ ++ done ++ ++.PHONY: missing depend ++ ++relabel: +diff --git selinux-gui-2.8/po/POTFILES selinux-gui-2.8/po/POTFILES +new file mode 100644 +index 0000000..1795c5c +--- /dev/null ++++ selinux-gui-2.8/po/POTFILES +@@ -0,0 +1,17 @@ ++../booleansPage.py ++../domainsPage.py ++../fcontextPage.py ++../loginsPage.py ++../modulesPage.py ++../org.selinux.config.policy ++../polgengui.py ++../polgen.ui ++../portsPage.py ++../selinux-polgengui.desktop ++../semanagePage.py ++../sepolicy.desktop ++../statusPage.py ++../system-config-selinux.desktop ++../system-config-selinux.py ++../system-config-selinux.ui ++../usersPage.py +diff --git selinux-gui-2.8/polgen.ui selinux-gui-2.8/polgen.ui +index aa4c70a..6a8c067 100644 +--- selinux-gui-2.8/polgen.ui ++++ selinux-gui-2.8/polgen.ui +@@ -1975,7 +1975,7 @@ Tab + + True + False +- Add File ++ Add File + True + + +@@ -2028,7 +2028,7 @@ Tab + + True + False +- Add Directory ++ Add Directory + True + + +@@ -2176,7 +2176,7 @@ Tab + + True + False +- Add Boolean ++ Add Boolean + True + + +diff --git selinux-gui-2.8/polgengui.py selinux-gui-2.8/polgengui.py +index 1601dbe..7e0d9d0 100644 +--- selinux-gui-2.8/polgengui.py ++++ selinux-gui-2.8/polgengui.py +@@ -63,7 +63,7 @@ def get_all_modules(): + ## + ## I18N + ## +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-gui" + try: + import gettext + kwargs = {} +diff --git selinux-gui-2.8/portsPage.py selinux-gui-2.8/portsPage.py +index 30f5838..a537ecc 100644 +--- selinux-gui-2.8/portsPage.py ++++ selinux-gui-2.8/portsPage.py +@@ -35,7 +35,7 @@ from semanagePage import * + ## + ## I18N + ## +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-gui" + try: + import gettext + kwargs = {} +diff --git selinux-gui-2.8/semanagePage.py selinux-gui-2.8/semanagePage.py +index 4127804..5361d69 100644 +--- selinux-gui-2.8/semanagePage.py ++++ selinux-gui-2.8/semanagePage.py +@@ -22,7 +22,7 @@ from gi.repository import Gdk, Gtk + ## + ## I18N + ## +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-gui" + try: + import gettext + kwargs = {} +diff --git selinux-gui-2.8/statusPage.py selinux-gui-2.8/statusPage.py +index 766854b..a8f079b 100644 +--- selinux-gui-2.8/statusPage.py ++++ selinux-gui-2.8/statusPage.py +@@ -35,7 +35,7 @@ RELABELFILE = "/.autorelabel" + ## + ## I18N + ## +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-gui" + try: + import gettext + kwargs = {} +diff --git selinux-gui-2.8/system-config-selinux.py selinux-gui-2.8/system-config-selinux.py +index ce7c74b..a81e9dd 100644 +--- selinux-gui-2.8/system-config-selinux.py ++++ selinux-gui-2.8/system-config-selinux.py +@@ -45,7 +45,7 @@ import selinux + ## + ## I18N + ## +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-gui" + try: + import gettext + kwargs = {} +diff --git selinux-gui-2.8/usersPage.py selinux-gui-2.8/usersPage.py +index 26794ed..d15d4c5 100644 +--- selinux-gui-2.8/usersPage.py ++++ selinux-gui-2.8/usersPage.py +@@ -29,7 +29,7 @@ from semanagePage import * + ## + ## I18N + ## +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-gui" + try: + import gettext + kwargs = {} diff --git a/SOURCES/selinux-python-fedora.patch b/SOURCES/selinux-python-fedora.patch new file mode 100644 index 0000000..9b00778 --- /dev/null +++ b/SOURCES/selinux-python-fedora.patch @@ -0,0 +1,2515 @@ +diff --git selinux-python-2.8/Makefile selinux-python-2.8/Makefile +index 80bc124..891bdee 100644 +--- selinux-python-2.8/Makefile ++++ selinux-python-2.8/Makefile +@@ -1,4 +1,4 @@ +-SUBDIRS = sepolicy audit2allow semanage sepolgen chcat ++SUBDIRS = sepolicy audit2allow semanage sepolgen chcat po + + all install relabel clean indent: + @for subdir in $(SUBDIRS); do \ +diff --git selinux-python-2.8/audit2allow/audit2allow selinux-python-2.8/audit2allow/audit2allow +index 37ab23a..195f151 100644 +--- selinux-python-2.8/audit2allow/audit2allow ++++ selinux-python-2.8/audit2allow/audit2allow +@@ -86,6 +86,8 @@ class AuditToPolicy: + dest="type") + parser.add_option("--perm-map", dest="perm_map", help="file name of perm map") + parser.add_option("--interface-info", dest="interface_info", help="file name of interface information") ++ parser.add_option("-x", "--xperms", action="store_true", dest="xperms", ++ default=False, help="generate extended permission rules") + parser.add_option("--debug", dest="debug", action="store_true", default=False, + help="leave generated modules for -M") + parser.add_option("-w", "--why", dest="audit2why", action="store_true", default=(os.path.basename(sys.argv[0]) == "audit2why"), +@@ -314,6 +316,10 @@ class AuditToPolicy: + ifs, perm_maps = self.__load_interface_info() + g.set_gen_refpol(ifs, perm_maps) + ++ # Extended permissions ++ if self.__options.xperms: ++ g.set_gen_xperms(True) ++ + # Explanation + if self.__options.verbose: + g.set_gen_explain(policygen.SHORT_EXPLANATION) +diff --git selinux-python-2.8/audit2allow/audit2allow.1 selinux-python-2.8/audit2allow/audit2allow.1 +index 21d286b..c61067b 100644 +--- selinux-python-2.8/audit2allow/audit2allow.1 ++++ selinux-python-2.8/audit2allow/audit2allow.1 +@@ -85,6 +85,9 @@ This is the default behavior. + Generate reference policy using installed macros. + This attempts to match denials against interfaces and may be inaccurate. + .TP ++.B "\-x" | "\-\-xperms" ++Generate extended permission access vector rules ++.TP + .B "\-w" | "\-\-why" + Translates SELinux audit messages into a description of why the access was denied + +diff --git selinux-python-2.8/audit2allow/test.log selinux-python-2.8/audit2allow/test.log +index 05249dc..718aca7 100644 +--- selinux-python-2.8/audit2allow/test.log ++++ selinux-python-2.8/audit2allow/test.log +@@ -34,3 +34,4 @@ node=mary.example.com type=AVC msg=audit(1166023021.373:910): avc: denied { re + node=lilly.example.com type=AVC_PATH msg=audit(1164783469.561:109): path="/linuxtest/LVT/lvt/log.current" + node=lilly.example.com type=SYSCALL msg=audit(1164783469.561:109): arch=14 syscall=11 success=yes exit=0 a0=10120520 a1=10120a78 a2=10120970 a3=118 items=0 ppid=8310 pid=8311 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) comm="smbd" exe="/usr/sbin/smbd" subj=root:system_r:smbd_t:s0 key=(null) + node=lilly.example.com type=AVC msg=audit(1164783469.561:109): avc: denied { append } for pid=8311 comm="smbd" name="log.current" dev=dm-0 ino=130930 scontext=root:system_r:smbd_t:s0 tcontext=root:object_r:default_t:s0 tclass=dir ++node=lilly.example.com type=AVC msg=audit(1164783469.561:109): avc: denied { ioctl } for pid=8311 comm="smbd" name="log.current" ioctlcmd=0x2a scontext=root:system_r:smbd_t:s0 tcontext=root:object_r:default_t:s0 tclass=tcp_socket +diff --git selinux-python-2.8/audit2allow/test_audit2allow.py selinux-python-2.8/audit2allow/test_audit2allow.py +index a826a9f..4427dea 100644 +--- selinux-python-2.8/audit2allow/test_audit2allow.py ++++ selinux-python-2.8/audit2allow/test_audit2allow.py +@@ -47,5 +47,14 @@ class Audit2allowTests(unittest.TestCase): + print(out, err) + self.assertSuccess("audit2why", p.returncode, err) + ++ def test_xperms(self): ++ "Verify that xperms generation works" ++ p = Popen(['python', './audit2allow', "-x", "-i", "test.log"], stdout=PIPE) ++ out, err = p.communicate() ++ if err: ++ print(out, err) ++ self.assertTrue(b"allowxperm" in out) ++ self.assertSuccess("xperms", p.returncode, err) ++ + if __name__ == "__main__": + unittest.main() +diff --git selinux-python-2.8/chcat/chcat selinux-python-2.8/chcat/chcat +index 4bd9fc6..27c537e 100755 +--- selinux-python-2.8/chcat/chcat ++++ selinux-python-2.8/chcat/chcat +@@ -4,7 +4,7 @@ + # + # chcat is a script that allows you modify the Security label on a file + # +-#` Author: Daniel Walsh ++# Author: Daniel Walsh + # + # This program is free software; you can redistribute it and/or + # modify it under the terms of the GNU General Public License as +@@ -22,19 +22,15 @@ + # 02111-1307 USA + # + # +-try: +- from subprocess import getstatusoutput +-except ImportError: +- from commands import getstatusoutput ++import subprocess + import sys + import os + import pwd +-import string + import getopt + import selinux + import seobject + +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-python" + try: + import gettext + kwargs = {} +@@ -44,7 +40,7 @@ try: + localedir="/usr/share/locale", + codeset='utf-8', + **kwargs) +-except: ++except ImportError: + try: + import builtins + builtins.__dict__['_'] = str +@@ -86,8 +82,7 @@ def chcat_user_add(newcat, users): + if len(serange) > 1: + top = serange[1].split(":") + if len(top) > 1: +- cats.append(top[1]) +- cats = expandCats(cats) ++ cats = expandCats(top[1].split(',')) + + for i in newcat[1:]: + if i not in cats: +@@ -99,12 +94,12 @@ def chcat_user_add(newcat, users): + new_serange = "%s-%s" % (serange[0], top[0]) + + if add_ind: +- cmd = "semanage login -a -r %s -s %s %s" % (new_serange, user[0], u) ++ cmd = ["semanage", "login", "-a", "-r", new_serange, "-s", user[0], u] + else: +- cmd = "semanage login -m -r %s -s %s %s" % (new_serange, user[0], u) +- rc = getstatusoutput(cmd) +- if rc[0] != 0: +- print(rc[1]) ++ cmd = ["semanage", "login", "-m", "-r", new_serange, "-s", user[0], u] ++ try: ++ subprocess.check_call(cmd, stderr=subprocess.STDOUT, shell=False) ++ except subprocess.CalledProcessError: + errors += 1 + + return errors +@@ -140,10 +135,11 @@ def chcat_add(orig, newcat, objects, login_ind): + cat_string = "%s,%s" % (cat_string, c) + else: + cat_string = cat +- cmd = 'chcon -l %s:%s %s' % (sensitivity, cat_string, f) +- rc = getstatusoutput(cmd) +- if rc[0] != 0: +- print(rc[1]) ++ ++ cmd = ["chcon", "-l", "%s:%s" % (sensitivity, cat_string), f] ++ try: ++ subprocess.check_call(cmd, stderr=subprocess.STDOUT, shell=False) ++ except subprocess.CalledProcessError: + errors += 1 + return errors + +@@ -166,8 +162,7 @@ def chcat_user_remove(newcat, users): + if len(serange) > 1: + top = serange[1].split(":") + if len(top) > 1: +- cats.append(top[1]) +- cats = expandCats(cats) ++ cats = expandCats(top[1].split(',')) + + for i in newcat[1:]: + if i in cats: +@@ -179,13 +174,15 @@ def chcat_user_remove(newcat, users): + new_serange = "%s-%s" % (serange[0], top[0]) + + if add_ind: +- cmd = "semanage login -a -r %s -s %s %s" % (new_serange, user[0], u) ++ cmd = ["semanage", "login", "-a", "-r", new_serange, "-s", user[0], u] + else: +- cmd = "semanage login -m -r %s -s %s %s" % (new_serange, user[0], u) +- rc = getstatusoutput(cmd) +- if rc[0] != 0: +- print(rc[1]) ++ cmd = ["semanage", "login", "-m", "-r", new_serange, "-s", user[0], u] ++ ++ try: ++ subprocess.check_call(cmd, stderr=subprocess.STDOUT, shell=False) ++ except subprocess.CalledProcessError: + errors += 1 ++ + return errors + + +@@ -224,12 +221,14 @@ def chcat_remove(orig, newcat, objects, login_ind): + continue + + if len(cat) == 0: +- cmd = 'chcon -l %s %s' % (sensitivity, f) ++ new_serange = sensitivity + else: +- cmd = 'chcon -l %s:%s %s' % (sensitivity, cat, f) +- rc = getstatusoutput(cmd) +- if rc[0] != 0: +- print(rc[1]) ++ new_serange = '%s:%s' % (sensitivity, cat) ++ ++ cmd = ["chcon", "-l", new_serange, f] ++ try: ++ subprocess.check_call(cmd, stderr=subprocess.STDOUT, shell=False) ++ except subprocess.CalledProcessError: + errors += 1 + return errors + +@@ -247,17 +246,17 @@ def chcat_user_replace(newcat, users): + add_ind = 1 + user = seusers["__default__"] + serange = user[1].split("-") +- new_serange = "%s-%s:%s" % (serange[0], newcat[0], string.join(newcat[1:], ",")) ++ new_serange = "%s-%s:%s" % (serange[0], newcat[0], ",".join(newcat[1:])) + if new_serange[-1:] == ":": + new_serange = new_serange[:-1] + + if add_ind: +- cmd = "semanage login -a -r %s -s %s %s" % (new_serange, user[0], u) ++ cmd = ["semanage", "login", "-a", "-r", new_serange, "-s", user[0], u] + else: +- cmd = "semanage login -m -r %s -s %s %s" % (new_serange, user[0], u) +- rc = getstatusoutput(cmd) +- if rc[0] != 0: +- print(rc[1]) ++ cmd = ["semanage", "login", "-m", "-r", new_serange, "-s", user[0], u] ++ try: ++ subprocess.check_call(cmd, stderr=subprocess.STDOUT, shell=False) ++ except subprocess.CalledProcessError: + errors += 1 + return errors + +@@ -266,21 +265,18 @@ def chcat_replace(newcat, objects, login_ind): + if login_ind == 1: + return chcat_user_replace(newcat, objects) + errors = 0 ++ # newcat[0] is the sensitivity level, newcat[1:] are the categories + if len(newcat) == 1: +- sensitivity = newcat[0] +- cmd = 'chcon -l %s ' % newcat[0] ++ new_serange = newcat[0] + else: +- sensitivity = newcat[0] +- cmd = 'chcon -l %s:%s' % (sensitivity, newcat[1]) ++ new_serange = "%s:%s" % (newcat[0], newcat[1]) + for cat in newcat[2:]: +- cmd = '%s,%s' % (cmd, cat) +- +- for f in objects: +- cmd = "%s %s" % (cmd, f) ++ new_serange = '%s,%s' % (new_serange, cat) + +- rc = getstatusoutput(cmd) +- if rc[0] != 0: +- print(rc[1]) ++ cmd = ["chcon", "-l", new_serange] + objects ++ try: ++ subprocess.check_call(cmd, stderr=subprocess.STDOUT, shell=False) ++ except subprocess.CalledProcessError: + errors += 1 + + return errors +@@ -384,7 +380,7 @@ def listusercats(users): + if len(users) == 0: + try: + users.append(os.getlogin()) +- except: ++ except OSError: + users.append(pwd.getpwuid(os.getuid()).pw_name) + + verify_users(users) +@@ -401,6 +397,7 @@ def error(msg): + print("%s: %s" % (sys.argv[0], msg)) + sys.exit(1) + ++ + if __name__ == '__main__': + if selinux.is_selinux_mls_enabled() != 1: + error("Requires a mls enabled system") +@@ -435,7 +432,7 @@ if __name__ == '__main__': + except getopt.error as error: + errorExit(_("Options Error %s ") % error.msg) + +- except ValueError as e: ++ except ValueError: + usage() + + if delete_ind: +diff --git selinux-python-2.8/po/Makefile selinux-python-2.8/po/Makefile +new file mode 100644 +index 0000000..4e052d5 +--- /dev/null ++++ selinux-python-2.8/po/Makefile +@@ -0,0 +1,83 @@ ++# ++# Makefile for the PO files (translation) catalog ++# ++ ++PREFIX ?= /usr ++ ++# What is this package? ++NLSPACKAGE = python ++POTFILE = $(NLSPACKAGE).pot ++INSTALL = /usr/bin/install -c -p ++INSTALL_DATA = $(INSTALL) -m 644 ++INSTALL_DIR = /usr/bin/install -d ++ ++# destination directory ++INSTALL_NLS_DIR = $(PREFIX)/share/locale ++ ++# PO catalog handling ++MSGMERGE = msgmerge ++MSGMERGE_FLAGS = -q ++XGETTEXT = xgettext --default-domain=$(NLSPACKAGE) ++MSGFMT = msgfmt ++ ++# All possible linguas ++PO_LINGUAS := $(sort $(patsubst %.po,%,$(wildcard *.po))) ++ ++# Only the files matching what the user has set in LINGUAS ++USER_LINGUAS := $(filter $(patsubst %,%%,$(LINGUAS)),$(PO_LINGUAS)) ++ ++# if no valid LINGUAS, build all languages ++USE_LINGUAS := $(if $(USER_LINGUAS),$(USER_LINGUAS),$(PO_LINGUAS)) ++ ++POFILES = $(patsubst %,%.po,$(USE_LINGUAS)) ++MOFILES = $(patsubst %.po,%.mo,$(POFILES)) ++POTFILES = $(shell cat POTFILES) ++ ++#default:: clean ++ ++all:: $(MOFILES) ++ ++$(POTFILE): $(POTFILES) ++ $(XGETTEXT) -L Python --keyword=_ --keyword=N_ $(POTFILES) ++ $(XGETTEXT) -j --keyword=_ --keyword=N_ ../sepolicy/sepolicy/sepolicy.glade ++ @if cmp -s $(NLSPACKAGE).po $(POTFILE); then \ ++ rm -f $(NLSPACKAGE).po; \ ++ else \ ++ mv -f $(NLSPACKAGE).po $(POTFILE); \ ++ fi; \ ++ ++ ++refresh-po: Makefile ++ for cat in $(POFILES); do \ ++ lang=`basename $$cat .po`; \ ++ if $(MSGMERGE) $(MSGMERGE_FLAGS) $$lang.po $(POTFILE) > $$lang.pot ; then \ ++ mv -f $$lang.pot $$lang.po ; \ ++ echo "$(MSGMERGE) of $$lang succeeded" ; \ ++ else \ ++ echo "$(MSGMERGE) of $$lang failed" ; \ ++ rm -f $$lang.pot ; \ ++ fi \ ++ done ++ ++clean: ++ @rm -fv *mo *~ .depend ++ @rm -rf tmp ++ ++install: $(MOFILES) ++ @for n in $(MOFILES); do \ ++ l=`basename $$n .mo`; \ ++ $(INSTALL_DIR) $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES; \ ++ $(INSTALL_DATA) --verbose $$n $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES/selinux-$(NLSPACKAGE).mo; \ ++ done ++ ++%.mo: %.po ++ $(MSGFMT) -o $@ $< ++report: ++ @for cat in $(wildcard *.po); do \ ++ echo -n "$$cat: "; \ ++ msgfmt -v --statistics -o /dev/null $$cat; \ ++ done ++ ++.PHONY: missing depend ++ ++relabel: +diff --git selinux-python-2.8/po/POTFILES selinux-python-2.8/po/POTFILES +new file mode 100644 +index 0000000..128eb87 +--- /dev/null ++++ selinux-python-2.8/po/POTFILES +@@ -0,0 +1,10 @@ ++../audit2allow/audit2allow ++../chcat/chcat ++../semanage/semanage ++../semanage/seobject.py ++../sepolgen/src/sepolgen/interfaces.py ++../sepolicy/sepolicy/generate.py ++../sepolicy/sepolicy/gui.py ++../sepolicy/sepolicy/__init__.py ++../sepolicy/sepolicy/interface.py ++../sepolicy/sepolicy.py +diff --git selinux-python-2.8/semanage/semanage selinux-python-2.8/semanage/semanage +index 8d8a086..301207e 100644 +--- selinux-python-2.8/semanage/semanage ++++ selinux-python-2.8/semanage/semanage +@@ -27,7 +27,7 @@ import traceback + import argparse + import seobject + import sys +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-python" + try: + import gettext + kwargs = {} +@@ -53,7 +53,7 @@ usage_fcontext = "semanage fcontext [-h] [-n] [-N] [-S STORE] [" + usage_fcontext_dict = {' --add': ('(', '-t TYPE', '-f FTYPE', '-r RANGE', '-s SEUSER', '|', '-e EQUAL', ')', 'FILE_SPEC',), ' --delete': ('(', '-t TYPE', '-f FTYPE', '|', '-e EQUAL', ')', 'FILE_SPEC',), ' --modify': ('(', '-t TYPE', '-f FTYPE', '-r RANGE', '-s SEUSER', '|', '-e EQUAL', ')', 'FILE_SPEC',), ' --list': ('[-C]',), ' --extract': ('',), ' --deleteall': ('',)} + + usage_user = "semanage user [-h] [-n] [-N] [-S STORE] [" +-usage_user_dict = {' --add': ('(', '-L LEVEL', '-R ROLES', '-r RANGE', '-s SEUSER', 'selinux_name'')'), ' --delete': ('selinux_name',), ' --modify': ('(', '-L LEVEL', '-R ROLES', '-r RANGE', '-s SEUSER', 'selinux_name', ')'), ' --list': ('-C',), ' --extract': ('',), ' --deleteall': ('',)} ++usage_user_dict = {' --add': ('(', '-L LEVEL', '-R ROLES', '-r RANGE', 'SEUSER', ')'), ' --delete': ('SEUSER',), ' --modify': ('(', '-L LEVEL', '-R ROLES', '-r RANGE', '-s SEUSER', 'SEUSER', ')'), ' --list': ('-C',), ' --extract': ('',), ' --deleteall': ('',)} + + usage_port = "semanage port [-h] [-n] [-N] [-S STORE] [" + usage_port_dict = {' --add': ('-t TYPE', '-p PROTOCOL', '-r RANGE', '(', 'port_name', '|', 'port_range', ')'), ' --modify': ('-t TYPE', '-p PROTOCOL', '-r RANGE', '(', 'port_name', '|', 'port_range', ')'), ' --delete': ('-p PROTOCOL', '(', 'port_name', '|', 'port_range', ')'), ' --list': ('-C',), ' --extract': ('',), ' --deleteall': ('',)} +@@ -62,7 +62,7 @@ usage_ibpkey = "semanage ibpkey [-h] [-n] [-N] [-s STORE] [" + usage_ibpkey_dict = {' --add': ('-t TYPE', '-x SUBNET_PREFIX', '-r RANGE', '(', 'ibpkey_name', '|', 'pkey_range', ')'), ' --modify': ('-t TYPE', '-x SUBNET_PREFIX', '-r RANGE', '(', 'ibpkey_name', '|', 'pkey_range', ')'), ' --delete': ('-x SUBNET_PREFIX', '(', 'ibpkey_name', '|', 'pkey_range', ')'), ' --list': ('-C',), ' --extract': ('',), ' --deleteall': ('',)} + + usage_ibendport = "semanage ibendport [-h] [-n] [-N] [-s STORE] [" +-usage_ibendport_dict = {' --add': ('-t TYPE', '-z IBDEV_NAME', '-r RANGE', '(', 'port', ')'), ' --modify': ('-t TYPE', '-z IBDEV_NAME', '-r RANGE', '(', 'port', ')'), ' --delete': ('-z IBDEV_NAME', '-r RANGE''(', 'port', ')'), ' --list': ('-C',), ' --extract': ('',), ' --deleteall': ('',)} ++usage_ibendport_dict = {' --add': ('-t TYPE', '-z IBDEV_NAME', '-r RANGE', '(', 'port', ')'), ' --modify': ('-t TYPE', '-z IBDEV_NAME', '-r RANGE', '(', 'port', ')'), ' --delete': ('-z IBDEV_NAME', '-r RANGE', '(', 'port', ')'), ' --list': ('-C',), ' --extract': ('',), ' --deleteall': ('',)} + + usage_node = "semanage node [-h] [-n] [-N] [-S STORE] [" + usage_node_dict = {' --add': ('-M NETMASK', '-p PROTOCOL', '-t TYPE', '-r RANGE', 'node'), ' --modify': ('-M NETMASK', '-p PROTOCOL', '-t TYPE', '-r RANGE', 'node'), ' --delete': ('-M NETMASK', '-p PROTOCOL', 'node'), ' --list': ('-C',), ' --extract': ('',), ' --deleteall': ('',)} +@@ -73,7 +73,7 @@ usage_interface_dict = {' --add': ('-t TYPE', '-r RANGE', 'interface'), ' --modi + usage_boolean = "semanage boolean [-h] [-n] [-N] [-S STORE] [" + usage_boolean_dict = {' --modify': ('(', '--on', '|', '--off', ')', 'boolean'), ' --list': ('-C',), ' --extract': ('',), ' --deleteall': ('',)} + +-import sepolicy ++ + + + class CheckRole(argparse.Action): +@@ -82,7 +82,11 @@ class CheckRole(argparse.Action): + newval = getattr(namespace, self.dest) + if not newval: + newval = [] +- roles = sepolicy.get_all_roles() ++ try: ++ import sepolicy ++ roles = sepolicy.get_all_roles() ++ except ValueError: ++ roles = [] + for v in value.split(): + if v not in roles: + raise ValueError("%s must be an SELinux role:\nValid roles: %s" % (v, ", ".join(roles))) +@@ -421,7 +425,7 @@ def setupUserParser(subparsers): + userParser.add_argument('-R', '--roles', default=[], + action=CheckRole, + help=_(''' +-SELinux Roles. You must enclose multiple roles within quotes, separate by spaces. Or specify -R multiple times. ++SELinux Roles. You must enclose multiple roles within quotes, separate by spaces. Or specify -R multiple times. + ''')) + userParser.add_argument('-P', '--prefix', default="user", help=argparse.SUPPRESS) + userParser.add_argument('selinux_name', nargs='?', default=None, help=_('selinux_name')) +@@ -604,19 +608,19 @@ def setupInterfaceParser(subparsers): + + def handleModule(args): + OBJECT = seobject.moduleRecords(args) +- if args.action == "add": +- OBJECT.add(args.module_name, args.priority) +- if args.action == "enable": +- OBJECT.set_enabled(args.module_name, True) +- if args.action == "disable": +- OBJECT.set_enabled(args.module_name, False) +- if args.action == "remove": +- OBJECT.delete(args.module_name, args.priority) +- if args.action is "deleteall": ++ if args.action_add: ++ OBJECT.add(args.action_add, args.priority) ++ if args.action_enable: ++ OBJECT.set_enabled(args.action_enable, True) ++ if args.action_disable: ++ OBJECT.set_enabled(args.action_disable, False) ++ if args.action_remove: ++ OBJECT.delete(args.action_remove, args.priority) ++ if args.action == "deleteall": + OBJECT.deleteall() + if args.action == "list": + OBJECT.list(args.noheading, args.locallist) +- if args.action is "extract": ++ if args.action == "extract": + for i in OBJECT.customized(): + print("module %s" % str(i)) + +@@ -630,14 +634,13 @@ def setupModuleParser(subparsers): + parser_add_priority(moduleParser, "module") + + mgroup = moduleParser.add_mutually_exclusive_group(required=True) +- parser_add_add(mgroup, "module") + parser_add_list(mgroup, "module") + parser_add_extract(mgroup, "module") + parser_add_deleteall(mgroup, "module") +- mgroup.add_argument('-r', '--remove', dest='action', action='store_const', const='remove', help=_("Remove a module")) +- mgroup.add_argument('-d', '--disable', dest='action', action='store_const', const='disable', help=_("Disable a module")) +- mgroup.add_argument('-e', '--enable', dest='action', action='store_const', const='enable', help=_("Enable a module")) +- moduleParser.add_argument('module_name', nargs='?', default=None, help=_('Name of the module to act on')) ++ mgroup.add_argument('-a', '--add', dest='action_add', action='store', nargs=1, metavar='module_name', help=_("Add a module")) ++ mgroup.add_argument('-r', '--remove', dest='action_remove', action='store', nargs='+', metavar='module_name', help=_("Remove a module")) ++ mgroup.add_argument('-d', '--disable', dest='action_disable', action='store', nargs='+', metavar='module_name', help=_("Disable a module")) ++ mgroup.add_argument('-e', '--enable', dest='action_enable', action='store', nargs='+', metavar='module_name', help=_("Enable a module")) + moduleParser.set_defaults(func=handleModule) + + +@@ -739,9 +742,7 @@ def handlePermissive(args): + if args.action is "delete": + OBJECT.delete(args.type) + else: +- args.parser.print_usage(sys.stderr) +- sys.stderr.write(_('semanage permissive: error: the following argument is required: type\n')) +- sys.exit(1) ++ args.parser.error(message=_('semanage permissive: error: the following argument is required: type\n')) + + + def setupPermissiveParser(subparsers): +@@ -776,7 +777,7 @@ def setupDontauditParser(subparsers): + + + def handleExport(args): +- manageditems = ["boolean", "login", "interface", "user", "port", "node", "fcontext", "module"] ++ manageditems = ["boolean", "login", "interface", "user", "port", "node", "fcontext", "module", "ibendport", "ibpkey"] + for i in manageditems: + print("%s -D" % i) + for i in manageditems: +diff --git selinux-python-2.8/semanage/semanage-user.8 selinux-python-2.8/semanage/semanage-user.8 +index 30bc670..23fec69 100644 +--- selinux-python-2.8/semanage/semanage-user.8 ++++ selinux-python-2.8/semanage/semanage-user.8 +@@ -2,7 +2,7 @@ + .SH "NAME" + .B semanage\-user \- SELinux Policy Management SELinux User mapping tool + .SH "SYNOPSIS" +-.B semanage user [\-h] [\-n] [\-N] [\-S STORE] [ \-\-add ( \-L LEVEL \-R ROLES \-r RANGE \-s SEUSER selinux_name) | \-\-delete selinux_name | \-\-deleteall | \-\-extract | \-\-list [\-C] | \-\-modify ( \-L LEVEL \-R ROLES \-r RANGE \-s SEUSER selinux_name ) ] ++.B semanage user [\-h] [\-n] [\-N] [\-S STORE] [ \-\-add ( \-L LEVEL \-R ROLES \-r RANGE SEUSER) | \-\-delete SEUSER | \-\-deleteall | \-\-extract | \-\-list [\-C] | \-\-modify ( \-L LEVEL \-R ROLES \-r RANGE SEUSER ) ] + + .SH "DESCRIPTION" + semanage is used to configure certain elements of +diff --git selinux-python-2.8/semanage/semanage.8 selinux-python-2.8/semanage/semanage.8 +index 0bdb90f..0cdcfcc 100644 +--- selinux-python-2.8/semanage/semanage.8 ++++ selinux-python-2.8/semanage/semanage.8 +@@ -57,9 +57,8 @@ to SELinux user identities (which controls the initial security context + assigned to Linux users when they login and bounds their authorized role set) + as well as security context mappings for various kinds of objects, such + as network ports, interfaces, infiniband pkeys and endports, and nodes (hosts) +-as well as the file context mapping. See the EXAMPLES section below for some +-examples of common usage. Note that the semanage login command deals with the +-mapping from Linux usernames (logins) to SELinux user identities, ++as well as the file context mapping. Note that the semanage login command deals ++with the mapping from Linux usernames (logins) to SELinux user identities, + while the semanage user command deals with the mapping from SELinux + user identities to authorized role sets. In most cases, only the + former mapping needs to be adjusted by the administrator; the latter +diff --git selinux-python-2.8/semanage/seobject.py selinux-python-2.8/semanage/seobject.py +index c76dce8..59df249 100644 +--- selinux-python-2.8/semanage/seobject.py ++++ selinux-python-2.8/semanage/seobject.py +@@ -30,10 +30,10 @@ import sys + import stat + import socket + from semanage import * +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-python" + import sepolicy + import setools +-from IPy import IP ++import ipaddress + + try: + import gettext +@@ -101,6 +101,8 @@ ftype_to_audit = {"": "any", + + try: + import audit ++ #test if audit module is enabled ++ audit.audit_close(audit.audit_open()) + + class logger: + +@@ -138,7 +140,7 @@ try: + + self.log_list = [] + self.log_change_list = [] +-except: ++except (OSError, ImportError): + class logger: + + def __init__(self): +@@ -258,6 +260,7 @@ class semanageRecords: + if self.store == "" or self.store == localstore: + self.mylog = logger() + else: ++ sepolicy.load_store_policy(self.store) + self.mylog = nulllogger() + + def set_reload(self, load): +@@ -397,6 +400,8 @@ class moduleRecords(semanageRecords): + print("%-25s %-9s %-5s %s" % (t[0], t[2], t[3], disabled)) + + def add(self, file, priority): ++ if type(file) == list: ++ file = file[0] + if not os.path.exists(file): + raise ValueError(_("Module does not exist: %s ") % file) + +@@ -409,7 +414,9 @@ class moduleRecords(semanageRecords): + self.commit() + + def set_enabled(self, module, enable): +- for m in module.split(): ++ if type(module) == str: ++ module = module.split() ++ for m in module: + rc, key = semanage_module_key_create(self.sh) + if rc < 0: + raise ValueError(_("Could not create module key")) +@@ -431,7 +438,9 @@ class moduleRecords(semanageRecords): + if rc < 0: + raise ValueError(_("Invalid priority %d (needs to be between 1 and 999)") % priority) + +- for m in module.split(): ++ if type(module) == str: ++ module = module.split() ++ for m in module: + rc = semanage_module_remove(self.sh, m) + if rc < 0 and rc != -2: + raise ValueError(_("Could not remove module %s (remove failed)") % m) +@@ -593,7 +602,6 @@ class loginRecords(semanageRecords): + + semanage_seuser_key_free(k) + semanage_seuser_free(u) +- self.mylog.log("login", name, sename=sename, serange=serange, serole=",".join(serole), oldserole=",".join(oldserole), oldsename=self.oldsename, oldserange=self.oldserange) + + def add(self, name, sename, serange): + try: +@@ -601,7 +609,6 @@ class loginRecords(semanageRecords): + self.__add(name, sename, serange) + self.commit() + except ValueError as error: +- self.mylog.commit(0) + raise error + + def __modify(self, name, sename="", serange=""): +@@ -653,7 +660,6 @@ class loginRecords(semanageRecords): + + semanage_seuser_key_free(k) + semanage_seuser_free(u) +- self.mylog.log("login", name, sename=self.sename, serange=self.serange, serole=",".join(serole), oldserole=",".join(oldserole), oldsename=self.oldsename, oldserange=self.oldserange) + + def modify(self, name, sename="", serange=""): + try: +@@ -661,7 +667,6 @@ class loginRecords(semanageRecords): + self.__modify(name, sename, serange) + self.commit() + except ValueError as error: +- self.mylog.commit(0) + raise error + + def __delete(self, name): +@@ -694,8 +699,6 @@ class loginRecords(semanageRecords): + rec, self.sename, self.serange = selinux.getseuserbyname("__default__") + range, (rc, serole) = userrec.get(self.sename) + +- self.mylog.log_remove("login", name, sename=self.sename, serange=self.serange, serole=",".join(serole), oldserole=",".join(oldserole), oldsename=self.oldsename, oldserange=self.oldserange) +- + def delete(self, name): + try: + self.begin() +@@ -703,7 +706,6 @@ class loginRecords(semanageRecords): + self.commit() + + except ValueError as error: +- self.mylog.commit(0) + raise error + + def deleteall(self): +@@ -717,7 +719,6 @@ class loginRecords(semanageRecords): + self.__delete(semanage_seuser_get_name(u)) + self.commit() + except ValueError as error: +- self.mylog.commit(0) + raise error + + def get_all_logins(self): +@@ -753,7 +754,10 @@ class loginRecords(semanageRecords): + l = [] + ddict = self.get_all(True) + for k in sorted(ddict.keys()): +- l.append("-a -s %s -r '%s' %s" % (ddict[k][0], ddict[k][1], k)) ++ if ddict[k][1]: ++ l.append("-a -s %s -r '%s' %s" % (ddict[k][0], ddict[k][1], k)) ++ else: ++ l.append("-a -s %s %s" % (ddict[k][0], k)) + return l + + def list(self, heading=1, locallist=0): +@@ -1020,7 +1024,10 @@ class seluserRecords(semanageRecords): + l = [] + ddict = self.get_all(True) + for k in sorted(ddict.keys()): +- l.append("-a -L %s -r %s -R '%s' %s" % (ddict[k][1], ddict[k][2], ddict[k][3], k)) ++ if ddict[k][1] or ddict[k][2]: ++ l.append("-a -L %s -r %s -R '%s' %s" % (ddict[k][1], ddict[k][2], ddict[k][3], k)) ++ else: ++ l.append("-a -R '%s' %s" % (ddict[k][3], k)) + return l + + def list(self, heading=1, locallist=0): +@@ -1043,13 +1050,15 @@ class seluserRecords(semanageRecords): + + + class portRecords(semanageRecords): +- try: +- valid_types = list(list(sepolicy.info(sepolicy.ATTRIBUTE, "port_type"))[0]["types"]) +- except RuntimeError: +- valid_types = [] ++ ++ valid_types = [] + + def __init__(self, args = None): + semanageRecords.__init__(self, args) ++ try: ++ self.valid_types = list(list(sepolicy.info(sepolicy.ATTRIBUTE, "port_type"))[0]["types"]) ++ except RuntimeError: ++ pass + + def __genkey(self, port, proto): + if proto == "tcp": +@@ -1087,6 +1096,8 @@ class portRecords(semanageRecords): + if type == "": + raise ValueError(_("Type is required")) + ++ type = sepolicy.get_real_type_name(type) ++ + if type not in self.valid_types: + raise ValueError(_("Type %s is invalid, must be a port type") % type) + +@@ -1151,6 +1162,7 @@ class portRecords(semanageRecords): + else: + raise ValueError(_("Requires setype")) + ++ setype = sepolicy.get_real_type_name(setype) + if setype and setype not in self.valid_types: + raise ValueError(_("Type %s is invalid, must be a port type") % setype) + +@@ -1295,10 +1307,11 @@ class portRecords(semanageRecords): + l = [] + ddict = self.get_all(True) + for k in sorted(ddict.keys()): +- if k[0] == k[1]: +- l.append("-a -t %s -p %s %s" % (ddict[k][0], k[2], k[0])) ++ port = k[0] if k[0] == k[1] else "%s-%s" % (k[0], k[1]) ++ if ddict[k][1]: ++ l.append("-a -t %s -r '%s' -p %s %s" % (ddict[k][0], ddict[k][1], k[2], port)) + else: +- l.append("-a -t %s -p %s %s-%s" % (ddict[k][0], k[2], k[0], k[1])) ++ l.append("-a -t %s -p %s %s" % (ddict[k][0], k[2], port)) + return l + + def list(self, heading=1, locallist=0): +@@ -1355,6 +1368,8 @@ class ibpkeyRecords(semanageRecords): + if type == "": + raise ValueError(_("Type is required")) + ++ type = sepolicy.get_real_type_name(type) ++ + if type not in self.valid_types: + raise ValueError(_("Type %s is invalid, must be a ibpkey type") % type) + +@@ -1417,6 +1432,8 @@ class ibpkeyRecords(semanageRecords): + else: + raise ValueError(_("Requires setype")) + ++ setype = sepolicy.get_real_type_name(setype) ++ + if setype and setype not in self.valid_types: + raise ValueError(_("Type %s is invalid, must be a ibpkey type") % setype) + +@@ -1548,10 +1565,11 @@ class ibpkeyRecords(semanageRecords): + ddict = self.get_all(True) + + for k in sorted(ddict.keys()): +- if k[0] == k[1]: +- l.append("-a -t %s -x %s %s" % (ddict[k][0], k[2], k[0])) ++ port = k[0] if k[0] == k[1] else "%s-%s" % (k[0], k[1]) ++ if ddict[k][1]: ++ l.append("-a -t %s -r '%s' -x %s %s" % (ddict[k][0], ddict[k][1], k[2], port)) + else: +- l.append("-a -t %s -x %s %s-%s" % (ddict[k][0], k[2], k[0], k[1])) ++ l.append("-a -t %s -x %s %s" % (ddict[k][0], k[2], port)) + return l + + def list(self, heading=1, locallist=0): +@@ -1603,6 +1621,8 @@ class ibendportRecords(semanageRecords): + if type == "": + raise ValueError(_("Type is required")) + ++ type = sepolicy.get_real_type_name(type) ++ + if type not in self.valid_types: + raise ValueError(_("Type %s is invalid, must be an ibendport type") % type) + (k, ibendport, port) = self.__genkey(ibendport, ibdev_name) +@@ -1664,6 +1684,8 @@ class ibendportRecords(semanageRecords): + else: + raise ValueError(_("Requires setype")) + ++ setype = sepolicy.get_real_type_name(setype) ++ + if setype and setype not in self.valid_types: + raise ValueError(_("Type %s is invalid, must be an ibendport type") % setype) + +@@ -1788,7 +1810,10 @@ class ibendportRecords(semanageRecords): + ddict = self.get_all(True) + + for k in sorted(ddict.keys()): +- l.append("-a -t %s -r %s -z %s %s" % (ddict[k][0], ddict[k][1], k[1], k[0])) ++ if ddict[k][1]: ++ l.append("-a -t %s -r '%s' -z %s %s" % (ddict[k][0], ddict[k][1], k[1], k[0])) ++ else: ++ l.append("-a -t %s -z %s %s" % (ddict[k][0], k[1], k[0])) + return l + + def list(self, heading=1, locallist=0): +@@ -1807,14 +1832,16 @@ class ibendportRecords(semanageRecords): + print(rec) + + class nodeRecords(semanageRecords): +- try: +- valid_types = list(list(sepolicy.info(sepolicy.ATTRIBUTE, "node_type"))[0]["types"]) +- except RuntimeError: +- valid_types = [] ++ ++ valid_types = [] + + def __init__(self, args = None): + semanageRecords.__init__(self, args) + self.protocol = ["ipv4", "ipv6"] ++ try: ++ self.valid_types = list(list(sepolicy.info(sepolicy.ATTRIBUTE, "node_type"))[0]["types"]) ++ except RuntimeError: ++ pass + + def validate(self, addr, mask, protocol): + newaddr = addr +@@ -1826,13 +1853,13 @@ class nodeRecords(semanageRecords): + + # verify valid comination + if len(mask) == 0 or mask[0] == "/": +- i = IP(addr + mask) +- newaddr = i.strNormal(0) +- newmask = str(i.netmask()) +- if newmask == "0.0.0.0" and i.version() == 6: ++ i = ipaddress.ip_network(addr + mask) ++ newaddr = str(i.network_address) ++ newmask = str(i.netmask) ++ if newmask == "0.0.0.0" and i.version == 6: + newmask = "::" + +- protocol = "ipv%d" % i.version() ++ protocol = "ipv%d" % i.version + + try: + newprotocol = self.protocol.index(protocol) +@@ -1853,6 +1880,8 @@ class nodeRecords(semanageRecords): + if ctype == "": + raise ValueError(_("SELinux node type is required")) + ++ ctype = sepolicy.get_real_type_name(ctype) ++ + if ctype not in self.valid_types: + raise ValueError(_("Type %s is invalid, must be a node type") % ctype) + +@@ -1922,6 +1951,8 @@ class nodeRecords(semanageRecords): + if serange == "" and setype == "": + raise ValueError(_("Requires setype or serange")) + ++ setype = sepolicy.get_real_type_name(setype) ++ + if setype and setype not in self.valid_types: + raise ValueError(_("Type %s is invalid, must be a node type") % setype) + +@@ -2024,7 +2055,10 @@ class nodeRecords(semanageRecords): + l = [] + ddict = self.get_all(True) + for k in sorted(ddict.keys()): +- l.append("-a -M %s -p %s -t %s %s" % (k[1], k[2], ddict[k][2], k[0])) ++ if ddict[k][3]: ++ l.append("-a -M %s -p %s -t %s -r '%s' %s" % (k[1], k[2], ddict[k][2], ddict[k][3], k[0])) ++ else: ++ l.append("-a -M %s -p %s -t %s %s" % (k[1], k[2], ddict[k][2], k[0])) + return l + + def list(self, heading=1, locallist=0): +@@ -2218,7 +2252,10 @@ class interfaceRecords(semanageRecords): + l = [] + ddict = self.get_all(True) + for k in sorted(ddict.keys()): +- l.append("-a -t %s %s" % (ddict[k][2], k)) ++ if ddict[k][3]: ++ l.append("-a -t %s -r '%s' %s" % (ddict[k][2], ddict[k][3], k)) ++ else: ++ l.append("-a -t %s %s" % (ddict[k][2], k)) + return l + + def list(self, heading=1, locallist=0): +@@ -2238,15 +2275,17 @@ class interfaceRecords(semanageRecords): + + + class fcontextRecords(semanageRecords): +- try: +- valid_types = list(list(sepolicy.info(sepolicy.ATTRIBUTE, "file_type"))[0]["types"]) +- valid_types += list(list(sepolicy.info(sepolicy.ATTRIBUTE, "device_node"))[0]["types"]) +- valid_types.append("<>") +- except RuntimeError: +- valid_types = [] ++ ++ valid_types = [] + + def __init__(self, args = None): + semanageRecords.__init__(self, args) ++ try: ++ self.valid_types = list(list(sepolicy.info(sepolicy.ATTRIBUTE, "file_type"))[0]["types"]) ++ self.valid_types += list(list(sepolicy.info(sepolicy.ATTRIBUTE, "device_node"))[0]["types"]) ++ except RuntimeError: ++ pass ++ + self.equiv = {} + self.equiv_dist = {} + self.equal_ind = False +@@ -2369,8 +2408,10 @@ class fcontextRecords(semanageRecords): + if type == "": + raise ValueError(_("SELinux Type is required")) + +- if type not in self.valid_types: +- raise ValueError(_("Type %s is invalid, must be a file or device type") % type) ++ if type != "<>": ++ type = sepolicy.get_real_type_name(type) ++ if type not in self.valid_types: ++ raise ValueError(_("Type %s is invalid, must be a file or device type") % type) + + (rc, k) = semanage_fcontext_key_create(self.sh, target, file_types[ftype]) + if rc < 0: +@@ -2432,8 +2473,10 @@ class fcontextRecords(semanageRecords): + def __modify(self, target, setype, ftype, serange, seuser): + if serange == "" and setype == "" and seuser == "": + raise ValueError(_("Requires setype, serange or seuser")) +- if setype and setype not in self.valid_types: +- raise ValueError(_("Type %s is invalid, must be a file or device type") % setype) ++ if setype not in ["", "<>"]: ++ setype = sepolicy.get_real_type_name(setype) ++ if setype not in self.valid_types: ++ raise ValueError(_("Type %s is invalid, must be a file or device type") % setype) + + self.validate(target) + +@@ -2597,7 +2640,10 @@ class fcontextRecords(semanageRecords): + fcon_dict = self.get_all(True) + for k in sorted(fcon_dict.keys()): + if fcon_dict[k]: +- l.append("-a -f %s -t %s '%s'" % (file_type_str_to_option[k[1]], fcon_dict[k][2], k[0])) ++ if fcon_dict[k][3]: ++ l.append("-a -f %s -t %s -r '%s' '%s'" % (file_type_str_to_option[k[1]], fcon_dict[k][2], fcon_dict[k][3], k[0])) ++ else: ++ l.append("-a -f %s -t %s '%s'" % (file_type_str_to_option[k[1]], fcon_dict[k][2], k[0])) + + if len(self.equiv): + for target in self.equiv.keys(): +diff --git selinux-python-2.8/sepolgen/src/sepolgen/access.py selinux-python-2.8/sepolgen/src/sepolgen/access.py +index a5d8698..ba80f93 100644 +--- selinux-python-2.8/sepolgen/src/sepolgen/access.py ++++ selinux-python-2.8/sepolgen/src/sepolgen/access.py +@@ -78,6 +78,7 @@ class AccessVector(util.Comparison): + .obj_class - The object class to which access is allowed. [String or None] + .perms - The permissions allowed to the object class. [IdSet] + .audit_msgs - The audit messages that generated this access vector [List of strings] ++ .xperms - Extended permissions attached to the AV. [Dictionary {operation: xperm set}] + """ + def __init__(self, init_list=None): + if init_list: +@@ -87,9 +88,11 @@ class AccessVector(util.Comparison): + self.tgt_type = None + self.obj_class = None + self.perms = refpolicy.IdSet() +- self.audit_msgs = [] +- self.type = audit2why.TERULE +- self.data = [] ++ ++ self.audit_msgs = [] ++ self.type = audit2why.TERULE ++ self.data = [] ++ self.xperms = {} + # when implementing __eq__ also __hash__ is needed on py2 + # if object is muttable __hash__ should be None + self.__hash__ = None +@@ -131,6 +134,15 @@ class AccessVector(util.Comparison): + l.extend(sorted(self.perms)) + return l + ++ def merge(self, av): ++ """Add permissions and extended permissions from AV""" ++ self.perms.update(av.perms) ++ ++ for op in av.xperms: ++ if op not in self.xperms: ++ self.xperms[op] = refpolicy.XpermSet() ++ self.xperms[op].extend(av.xperms[op]) ++ + def __str__(self): + return self.to_string() + +@@ -260,28 +272,28 @@ class AccessVectorSet: + def add(self, src_type, tgt_type, obj_class, perms, audit_msg=None, avc_type=audit2why.TERULE, data=[]): + """Add an access vector to the set. + """ +- tgt = self.src.setdefault(src_type, { }) +- cls = tgt.setdefault(tgt_type, { }) +- +- if (obj_class, avc_type) in cls: +- access = cls[obj_class, avc_type] +- else: +- access = AccessVector() +- access.src_type = src_type +- access.tgt_type = tgt_type +- access.obj_class = obj_class +- access.data = data +- access.type = avc_type +- cls[obj_class, avc_type] = access +- +- access.perms.update(perms) +- if audit_msg: +- access.audit_msgs.append(audit_msg) ++ av = AccessVector() ++ av.src_type = src_type ++ av.tgt_type = tgt_type ++ av.obj_class = obj_class ++ av.perms = perms ++ av.data = data ++ av.type = avc_type ++ ++ self.add_av(av, audit_msg) + + def add_av(self, av, audit_msg=None): + """Add an access vector to the set.""" +- self.add(av.src_type, av.tgt_type, av.obj_class, av.perms) ++ tgt = self.src.setdefault(av.src_type, { }) ++ cls = tgt.setdefault(av.tgt_type, { }) + ++ if (av.obj_class, av.type) in cls: ++ cls[av.obj_class, av.type].merge(av) ++ else: ++ cls[av.obj_class, av.type] = av ++ ++ if audit_msg: ++ cls[av.obj_class, av.type].audit_msgs.append(audit_msg) + + def avs_extract_types(avs): + types = refpolicy.IdSet() +diff --git selinux-python-2.8/sepolgen/src/sepolgen/audit.py selinux-python-2.8/sepolgen/src/sepolgen/audit.py +index 26ce6c9..daed58c 100644 +--- selinux-python-2.8/sepolgen/src/sepolgen/audit.py ++++ selinux-python-2.8/sepolgen/src/sepolgen/audit.py +@@ -152,6 +152,7 @@ class AVCMessage(AuditMessage): + access - list of accesses that were allowed or denied + denial - boolean indicating whether this was a denial (True) or granted + (False) message. ++ ioctlcmd - ioctl 'request' parameter + + An example audit message generated from the audit daemon looks like (line breaks + added): +@@ -178,6 +179,7 @@ class AVCMessage(AuditMessage): + self.name = "" + self.accesses = [] + self.denial = True ++ self.ioctlcmd = None + self.type = audit2why.TERULE + + def __parse_access(self, recs, start): +@@ -237,6 +239,11 @@ class AVCMessage(AuditMessage): + self.exe = fields[1][1:-1] + elif fields[0] == "name": + self.name = fields[1][1:-1] ++ elif fields[0] == "ioctlcmd": ++ try: ++ self.ioctlcmd = int(fields[1], 16) ++ except ValueError: ++ pass + + if not found_src or not found_tgt or not found_class or not found_access: + raise ValueError("AVC message in invalid format [%s]\n" % self.message) +@@ -522,13 +529,20 @@ class AuditParser: + for avc in self.avc_msgs: + if avc.denial != True and only_denials: + continue +- if avc_filter: +- if avc_filter.filter(avc): +- av_set.add(avc.scontext.type, avc.tcontext.type, avc.tclass, +- avc.accesses, avc, avc_type=avc.type, data=avc.data) +- else: +- av_set.add(avc.scontext.type, avc.tcontext.type, avc.tclass, +- avc.accesses, avc, avc_type=avc.type, data=avc.data) ++ ++ if not avc_filter or avc_filter.filter(avc): ++ av = access.AccessVector([avc.scontext.type, avc.tcontext.type, ++ avc.tclass] + avc.accesses) ++ av.data = avc.data ++ av.type = avc.type ++ ++ if avc.ioctlcmd: ++ xperm_set = refpolicy.XpermSet() ++ xperm_set.add(avc.ioctlcmd) ++ av.xperms["ioctl"] = xperm_set ++ ++ av_set.add_av(av, audit_msg=avc) ++ + return av_set + + class AVCTypeFilter: +diff --git selinux-python-2.8/sepolgen/src/sepolgen/policygen.py selinux-python-2.8/sepolgen/src/sepolgen/policygen.py +index ee664fb..319da15 100644 +--- selinux-python-2.8/sepolgen/src/sepolgen/policygen.py ++++ selinux-python-2.8/sepolgen/src/sepolgen/policygen.py +@@ -50,10 +50,11 @@ class PolicyGenerator: + in the form of access vectors. + + It generates allow rules and optionally module require +- statements and reference policy interfaces. By default +- only allow rules are generated. The methods .set_gen_refpol +- and .set_gen_requires turns on interface generation and +- requires generation respectively. ++ statements, reference policy interfaces, and extended ++ 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. + + PolicyGenerator can also optionally add comments explaining + why a particular access was allowed based on the audit +@@ -82,6 +83,7 @@ class PolicyGenerator: + self.module = refpolicy.Module() + + self.dontaudit = False ++ self.xperms = False + + self.domains = None + def set_gen_refpol(self, if_set=None, perm_maps=None): +@@ -120,6 +122,12 @@ class PolicyGenerator: + def set_gen_dontaudit(self, dontaudit): + self.dontaudit = dontaudit + ++ def set_gen_xperms(self, xperms): ++ """Set whether extended permission access vector rules ++ are generated. ++ """ ++ self.xperms = xperms ++ + def __set_module_style(self): + if self.ifgen: + refpolicy = True +@@ -153,51 +161,69 @@ class PolicyGenerator: + """Return the generated module""" + return self.module + +- def __add_allow_rules(self, avs): +- for av in avs: +- rule = refpolicy.AVRule(av) ++ def __add_av_rule(self, av): ++ """Add access vector rule. ++ """ ++ rule = refpolicy.AVRule(av) ++ ++ if self.dontaudit: ++ rule.rule_type = rule.DONTAUDIT ++ rule.comment = "" ++ if self.explain: ++ rule.comment = str(refpolicy.Comment(explain_access(av, verbosity=self.explain))) ++ ++ if av.type == audit2why.ALLOW: ++ rule.comment += "\n#!!!! This avc is allowed in the current policy" ++ ++ if av.xperms: ++ rule.comment += "\n#!!!! This av rule may have been overridden by an extended permission av rule" ++ ++ if av.type == audit2why.DONTAUDIT: ++ rule.comment += "\n#!!!! This avc has a dontaudit rule in the current policy" ++ ++ if av.type == audit2why.BOOLEAN: ++ if len(av.data) > 1: ++ rule.comment += "\n#!!!! This avc can be allowed using one of the these booleans:\n# %s" % ", ".join([x[0] for x in av.data]) ++ else: ++ rule.comment += "\n#!!!! This avc can be allowed using the boolean '%s'" % av.data[0][0] ++ ++ if av.type == audit2why.CONSTRAINT: ++ rule.comment += "\n#!!!! This avc is a constraint violation. You would need to modify the attributes of either the source or target types to allow this access." ++ rule.comment += "\n#Constraint rule: " ++ rule.comment += "\n#\t" + av.data[0] ++ for reason in av.data[1:]: ++ rule.comment += "\n#\tPossible cause is the source %s and target %s are different." % reason ++ ++ try: ++ if ( av.type == audit2why.TERULE and ++ "write" in av.perms and ++ ( "dir" in av.obj_class or "open" in av.perms )): ++ if not self.domains: ++ self.domains = seinfo(ATTRIBUTE, name="domain")[0]["types"] ++ types=[] ++ ++ for i in [x[TCONTEXT] for x in sesearch([ALLOW], {SCONTEXT: av.src_type, CLASS: av.obj_class, PERMS: av.perms})]: ++ if i not in self.domains: ++ types.append(i) ++ if len(types) == 1: ++ rule.comment += "\n#!!!! The source type '%s' can write to a '%s' of the following type:\n# %s\n" % ( av.src_type, av.obj_class, ", ".join(types)) ++ elif len(types) >= 1: ++ rule.comment += "\n#!!!! The source type '%s' can write to a '%s' of the following types:\n# %s\n" % ( av.src_type, av.obj_class, ", ".join(types)) ++ except: ++ pass ++ ++ self.module.children.append(rule) ++ ++ def __add_ext_av_rules(self, av): ++ """Add extended permission access vector rules. ++ """ ++ for op in av.xperms.keys(): ++ extrule = refpolicy.AVExtRule(av, op) ++ + if self.dontaudit: +- rule.rule_type = rule.DONTAUDIT +- rule.comment = "" +- if self.explain: +- rule.comment = str(refpolicy.Comment(explain_access(av, verbosity=self.explain))) +- if av.type == audit2why.ALLOW: +- rule.comment += "\n#!!!! This avc is allowed in the current policy" +- if av.type == audit2why.DONTAUDIT: +- rule.comment += "\n#!!!! This avc has a dontaudit rule in the current policy" +- +- if av.type == audit2why.BOOLEAN: +- if len(av.data) > 1: +- rule.comment += "\n#!!!! This avc can be allowed using one of the these booleans:\n# %s" % ", ".join([x[0] for x in av.data]) +- else: +- rule.comment += "\n#!!!! This avc can be allowed using the boolean '%s'" % av.data[0][0] +- +- if av.type == audit2why.CONSTRAINT: +- rule.comment += "\n#!!!! This avc is a constraint violation. You would need to modify the attributes of either the source or target types to allow this access." +- rule.comment += "\n#Constraint rule: " +- rule.comment += "\n#\t" + av.data[0] +- for reason in av.data[1:]: +- rule.comment += "\n#\tPossible cause is the source %s and target %s are different." % reason +- +- try: +- if ( av.type == audit2why.TERULE and +- "write" in av.perms and +- ( "dir" in av.obj_class or "open" in av.perms )): +- if not self.domains: +- self.domains = seinfo(ATTRIBUTE, name="domain")[0]["types"] +- types=[] +- +- for i in [x[TCONTEXT] for x in sesearch([ALLOW], {SCONTEXT: av.src_type, CLASS: av.obj_class, PERMS: av.perms})]: +- if i not in self.domains: +- types.append(i) +- if len(types) == 1: +- rule.comment += "\n#!!!! The source type '%s' can write to a '%s' of the following type:\n# %s\n" % ( av.src_type, av.obj_class, ", ".join(types)) +- elif len(types) >= 1: +- rule.comment += "\n#!!!! The source type '%s' can write to a '%s' of the following types:\n# %s\n" % ( av.src_type, av.obj_class, ", ".join(types)) +- except: +- pass +- self.module.children.append(rule) ++ extrule.rule_type = extrule.DONTAUDITXPERM + ++ self.module.children.append(extrule) + + def add_access(self, av_set): + """Add the access from the access vector set to this +@@ -215,7 +241,10 @@ class PolicyGenerator: + raw_allow = av_set + + # Generate the raw allow rules from the filtered list +- self.__add_allow_rules(raw_allow) ++ for av in raw_allow: ++ self.__add_av_rule(av) ++ if self.xperms and av.xperms: ++ self.__add_ext_av_rules(av) + + def add_role_types(self, role_type_set): + for role_type in role_type_set: +diff --git selinux-python-2.8/sepolgen/src/sepolgen/refparser.py selinux-python-2.8/sepolgen/src/sepolgen/refparser.py +index 2cef8e8..3415aff 100644 +--- selinux-python-2.8/sepolgen/src/sepolgen/refparser.py ++++ selinux-python-2.8/sepolgen/src/sepolgen/refparser.py +@@ -786,7 +786,7 @@ def p_role_allow(p): + + def p_permissive(p): + 'permissive : PERMISSIVE names SEMI' +- t.skip(1) ++ pass + + def p_avrule_def(p): + '''avrule_def : ALLOW names names COLON names names SEMI +diff --git selinux-python-2.8/sepolgen/src/sepolgen/refpolicy.py selinux-python-2.8/sepolgen/src/sepolgen/refpolicy.py +index 352b187..c30a8c7 100644 +--- selinux-python-2.8/sepolgen/src/sepolgen/refpolicy.py ++++ selinux-python-2.8/sepolgen/src/sepolgen/refpolicy.py +@@ -109,6 +109,9 @@ class Node(PolicyBase): + def avrules(self): + return filter(lambda x: isinstance(x, AVRule), walktree(self)) + ++ def avextrules(self): ++ return filter(lambda x: isinstance(x, AVExtRule), walktree(self)) ++ + def typerules(self): + return filter(lambda x: isinstance(x, TypeRule), walktree(self)) + +@@ -352,6 +355,65 @@ class ObjectClass(Leaf): + self.name = name + self.perms = IdSet() + ++class XpermSet(): ++ """Extended permission set. ++ ++ This class represents one or more extended permissions ++ represented by numeric values or ranges of values. The ++ .complement attribute is used to specify all permission ++ except those specified. ++ ++ Two xperm set can be merged using the .extend() method. ++ """ ++ def __init__(self, complement=False): ++ self.complement = complement ++ self.ranges = [] ++ ++ def __normalize_ranges(self): ++ """Ensure that ranges are not overlapping. ++ """ ++ self.ranges.sort() ++ ++ i = 0 ++ while i < len(self.ranges): ++ while i + 1 < len(self.ranges): ++ if self.ranges[i + 1][0] <= self.ranges[i][1] + 1: ++ self.ranges[i] = (self.ranges[i][0], max(self.ranges[i][1], ++ self.ranges[i + 1][1])) ++ del self.ranges[i + 1] ++ else: ++ break ++ i += 1 ++ ++ def extend(self, s): ++ """Add ranges from an xperm set ++ """ ++ self.ranges.extend(s.ranges) ++ self.__normalize_ranges() ++ ++ def add(self, minimum, maximum=None): ++ """Add value of range of values to the xperm set. ++ """ ++ if maximum is None: ++ maximum = minimum ++ self.ranges.append((minimum, maximum)) ++ self.__normalize_ranges() ++ ++ def to_string(self): ++ if not self.ranges: ++ return "" ++ ++ compl = "~ " if self.complement else "" ++ ++ # print single value without braces ++ if len(self.ranges) == 1 and self.ranges[0][0] == self.ranges[0][1]: ++ return compl + str(self.ranges[0][0]) ++ ++ vals = map(lambda x: str(x[0]) if x[0] == x[1] else "%s-%s" % x, ++ self.ranges) ++ ++ return "%s{ %s }" % (compl, " ".join(vals)) ++ + # Basic statements + + class TypeAttribute(Leaf): +@@ -472,8 +534,10 @@ class AVRule(Leaf): + return "allow" + elif self.rule_type == self.DONTAUDIT: + return "dontaudit" +- else: ++ elif self.rule_type == self.AUDITALLOW: + return "auditallow" ++ elif self.rule_type == self.NEVERALLOW: ++ return "neverallow" + + def from_av(self, av): + """Add the access from an access vector to this allow +@@ -497,6 +561,65 @@ class AVRule(Leaf): + self.tgt_types.to_space_str(), + self.obj_classes.to_space_str(), + self.perms.to_space_str()) ++ ++class AVExtRule(Leaf): ++ """Extended permission access vector rule. ++ ++ The AVExtRule class represents allowxperm, dontauditxperm, ++ auditallowxperm, and neverallowxperm rules. ++ ++ The source and target types, and object classes are represented ++ by sets containing strings. The operation is a single string, ++ e.g. 'ioctl'. Extended permissions are represented by an XpermSet. ++ """ ++ ALLOWXPERM = 0 ++ DONTAUDITXPERM = 1 ++ AUDITALLOWXPERM = 2 ++ NEVERALLOWXPERM = 3 ++ ++ def __init__(self, av=None, op=None, parent=None): ++ Leaf.__init__(self, parent) ++ self.src_types = IdSet() ++ self.tgt_types = IdSet() ++ self.obj_classes = IdSet() ++ self.rule_type = self.ALLOWXPERM ++ self.xperms = XpermSet() ++ self.operation = op ++ if av: ++ self.from_av(av, op) ++ ++ def __rule_type_str(self): ++ if self.rule_type == self.ALLOWXPERM: ++ return "allowxperm" ++ elif self.rule_type == self.DONTAUDITXPERM: ++ return "dontauditxperm" ++ elif self.rule_type == self.AUDITALLOWXPERM: ++ return "auditallowxperm" ++ elif self.rule_type == self.NEVERALLOWXPERM: ++ return "neverallowxperm" ++ ++ def from_av(self, av, op): ++ self.src_types.add(av.src_type) ++ if av.src_type == av.tgt_type: ++ self.tgt_types.add("self") ++ else: ++ self.tgt_types.add(av.tgt_type) ++ self.obj_classes.add(av.obj_class) ++ self.operation = op ++ self.xperms = av.xperms[op] ++ ++ def to_string(self): ++ """Return a string representation of the rule that is ++ a valid policy language representation (assuming that ++ the types, object class, etc. are valid). ++ """ ++ return "%s %s %s:%s %s %s;" % (self.__rule_type_str(), ++ self.src_types.to_space_str(), ++ self.tgt_types.to_space_str(), ++ self.obj_classes.to_space_str(), ++ self.operation, ++ self.xperms.to_string()) ++ + class TypeRule(Leaf): + """SELinux type rules. + +diff --git selinux-python-2.8/sepolgen/src/sepolgen/sepolgeni18n.py selinux-python-2.8/sepolgen/src/sepolgen/sepolgeni18n.py +index 998c435..56ebd80 100644 +--- selinux-python-2.8/sepolgen/src/sepolgen/sepolgeni18n.py ++++ selinux-python-2.8/sepolgen/src/sepolgen/sepolgeni18n.py +@@ -19,7 +19,7 @@ + + try: + import gettext +- t = gettext.translation( 'yumex' ) ++ t = gettext.translation( 'selinux-python' ) + _ = t.gettext + except: + def _(str): +diff --git selinux-python-2.8/sepolgen/src/sepolgen/util.py selinux-python-2.8/sepolgen/src/sepolgen/util.py +index 1fca971..b3d2616 100644 +--- selinux-python-2.8/sepolgen/src/sepolgen/util.py ++++ selinux-python-2.8/sepolgen/src/sepolgen/util.py +@@ -125,7 +125,7 @@ class Comparison(): + _compare function within your class.""" + + def _compare(self, other, method): +- raise NotImplemented ++ return NotImplemented + + def __eq__(self, other): + return self._compare(other, lambda a, b: a == b) +diff --git selinux-python-2.8/sepolgen/tests/test_access.py selinux-python-2.8/sepolgen/tests/test_access.py +index d45a823..73a5407 100644 +--- selinux-python-2.8/sepolgen/tests/test_access.py ++++ selinux-python-2.8/sepolgen/tests/test_access.py +@@ -32,6 +32,7 @@ class TestAccessVector(unittest.TestCase): + self.assertEqual(a.obj_class, None) + self.assertTrue(isinstance(a.perms, refpolicy.IdSet)) + self.assertTrue(isinstance(a.audit_msgs, type([]))) ++ self.assertTrue(isinstance(a.xperms, type({}))) + self.assertEqual(len(a.audit_msgs), 0) + + # Construction from a list +@@ -61,6 +62,10 @@ class TestAccessVector(unittest.TestCase): + self.assertEqual(a.obj_class, l.obj_class) + self.assertEqual(a.perms, l.perms) + ++ l2 = access.AccessVector() ++ with self.assertRaises(ValueError): ++ l2.from_list(['foo', 'bar', 'file']) ++ + def test_to_list(self): + a = access.AccessVector() + a.src_type = "foo" +@@ -145,7 +150,80 @@ class TestAccessVector(unittest.TestCase): + + b.perms = refpolicy.IdSet(["read", "append"]) + self.assertNotEqual(a, b) ++ ++ def test_merge_noxperm(self): ++ """Test merging two AVs without xperms""" ++ a = access.AccessVector(["foo", "bar", "file", "read", "write"]) ++ b = access.AccessVector(["foo", "bar", "file", "append"]) ++ ++ a.merge(b) ++ self.assertEqual(sorted(list(a.perms)), ["append", "read", "write"]) ++ ++ def text_merge_xperm1(self): ++ """Test merging AV that contains xperms with AV that does not""" ++ a = access.AccessVector(["foo", "bar", "file", "read"]) ++ b = access.AccessVector(["foo", "bar", "file", "read"]) ++ xp = refpolicy.XpermSet() ++ xp.add(42) ++ xp.add(12345) ++ b.xperms = {"ioctl": xp} ++ ++ a.merge(b) ++ self.assertEqual(sorted(list(a.perms)), ["append", "read", "write"]) ++ self.assertEqual(list(a.xperms.keys()), ["ioctl"]) ++ self.assertEqual(a.xperms["ioctl"].to_string(), "{ 42 12345 }") ++ ++ def text_merge_xperm2(self): ++ """Test merging AV that does not contain xperms with AV that does""" ++ a = access.AccessVector(["foo", "bar", "file", "read"]) ++ xp = refpolicy.XpermSet() ++ xp.add(42) ++ xp.add(12345) ++ a.xperms = {"ioctl": xp} ++ b = access.AccessVector(["foo", "bar", "file", "read"]) ++ ++ a.merge(b) ++ self.assertEqual(sorted(list(a.perms)), ["append", "read", "write"]) ++ self.assertEqual(list(a.xperms.keys()), ["ioctl"]) ++ self.assertEqual(a.xperms["ioctl"].to_string(), "{ 42 12345 }") ++ ++ def test_merge_xperm_diff_op(self): ++ """Test merging two AVs that contain xperms with different operation""" ++ a = access.AccessVector(["foo", "bar", "file", "read"]) ++ xp1 = refpolicy.XpermSet() ++ xp1.add(23) ++ a.xperms = {"asdf": xp1} ++ ++ b = access.AccessVector(["foo", "bar", "file", "read"]) ++ xp2 = refpolicy.XpermSet() ++ xp2.add(42) ++ xp2.add(12345) ++ b.xperms = {"ioctl": xp2} ++ ++ a.merge(b) ++ self.assertEqual(list(a.perms), ["read"]) ++ self.assertEqual(sorted(list(a.xperms.keys())), ["asdf", "ioctl"]) ++ self.assertEqual(a.xperms["asdf"].to_string(), "23") ++ self.assertEqual(a.xperms["ioctl"].to_string(), "{ 42 12345 }") + ++ def test_merge_xperm_same_op(self): ++ """Test merging two AVs that contain xperms with same operation""" ++ a = access.AccessVector(["foo", "bar", "file", "read"]) ++ xp1 = refpolicy.XpermSet() ++ xp1.add(23) ++ a.xperms = {"ioctl": xp1} ++ ++ b = access.AccessVector(["foo", "bar", "file", "read"]) ++ xp2 = refpolicy.XpermSet() ++ xp2.add(42) ++ xp2.add(12345) ++ b.xperms = {"ioctl": xp2} ++ ++ a.merge(b) ++ self.assertEqual(list(a.perms), ["read"]) ++ self.assertEqual(list(a.xperms.keys()), ["ioctl"]) ++ self.assertEqual(a.xperms["ioctl"].to_string(), "{ 23 42 12345 }") ++ + class TestUtilFunctions(unittest.TestCase): + def test_is_idparam(self): + self.assertTrue(access.is_idparam("$1")) +@@ -260,3 +338,53 @@ class TestAccessVectorSet(unittest.TestCase): + b = access.AccessVectorSet() + b.from_list(avl) + self.assertEqual(len(b), 3) ++ ++ def test_add_av_first(self): ++ """Test adding first AV to the AV set""" ++ avs = access.AccessVectorSet() ++ av = access.AccessVector(['foo', 'bar', 'file', 'read']) ++ ++ avs.add_av(av) ++ ++ self.assertEqual(avs.to_list(), [['foo', 'bar', 'file', 'read']]) ++ ++ def test_add_av_second(self): ++ """Test adding second AV to the AV set with same source and target ++ context and class""" ++ avs = access.AccessVectorSet() ++ av1 = access.AccessVector(['foo', 'bar', 'file', 'read']) ++ av2 = access.AccessVector(['foo', 'bar', 'file', 'write']) ++ ++ avs.add_av(av1) ++ avs.add_av(av2) ++ ++ self.assertEqual(avs.to_list(), [['foo', 'bar', 'file', 'read', ++ 'write']]) ++ ++ def test_add_av_with_msg(self): ++ """Test adding audit message""" ++ avs = access.AccessVectorSet() ++ av = access.AccessVector(['foo', 'bar', 'file', 'read']) ++ ++ avs.add_av(av, 'test message') ++ ++ self.assertEqual(avs.src['foo']['bar']['file', av.type].audit_msgs, ++ ['test message']) ++ ++ def test_add(self): ++ """Test adding AV to the set""" ++ s = access.AccessVectorSet() ++ ++ def test_add_av(av, audit_msg=None): ++ self.assertEqual(av.src_type, 'foo') ++ self.assertEqual(av.tgt_type, 'bar') ++ self.assertEqual(av.obj_class, 'file') ++ self.assertEqual(list(av.perms), ['read']) ++ self.assertEqual(av.data, 'test data') ++ self.assertEqual(av.type, 42) ++ self.assertEqual(audit_msg, 'test message') ++ ++ s.add_av = test_add_av ++ ++ s.add("foo", "bar", "file", refpolicy.IdSet(["read"]), ++ audit_msg='test message', avc_type=42, data='test data') +diff --git selinux-python-2.8/sepolgen/tests/test_audit.py selinux-python-2.8/sepolgen/tests/test_audit.py +index 6379954..dbe6be2 100644 +--- selinux-python-2.8/sepolgen/tests/test_audit.py ++++ selinux-python-2.8/sepolgen/tests/test_audit.py +@@ -56,6 +56,18 @@ type=SYSCALL msg=audit(1162852201.019:1225): arch=40000003 syscall=11 success=ye + type=AVC msg=audit(1162852201.019:1225): avc: denied { execute_no_trans } for pid=6974 comm="sh" name="sa1" dev=dm-0 ino=13061698 scontext=system_u:system_r:crond_t:s0-s0:c0.c1023 tcontext=system_u:object_r:lib_t:s0 tclass=file + type=AVC msg=audit(1162852201.019:1225): avc: denied { execute } for pid=6974 comm="sh" name="sa1" dev=dm-0 ino=13061698 scontext=system_u:system_r:crond_t:s0-s0:c0.c1023 tcontext=system_u:object_r:lib_t:s0 tclass=file""" + ++xperms1 = """type=AVC msg=audit(1516626657.910:4461): avc: denied { ioctl } for pid=4310 comm="test" path="/root/test" ino=8619937 ioctlcmd=0x42 scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:test_file_t:s0 tclass=file permissive=0 ++""" ++xperms2 = """type=AVC msg=audit(1516626657.910:4461): avc: denied { ioctl } for pid=4310 comm="test" path="/root/test" ino=8619937 ioctlcmd=0x42 scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:test_file_t:s0 tclass=file permissive=0 ++type=AVC msg=audit(1516626657.910:4461): avc: denied { ioctl } for pid=4310 comm="test" path="/root/test" ino=8619937 ioctlcmd=0x1234 scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:test_file_t:s0 tclass=file permissive=0 ++type=AVC msg=audit(1516626657.910:4461): avc: denied { ioctl } for pid=4310 comm="test" path="/root/test" ino=8619937 ioctlcmd=0xdead scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:test_file_t:s0 tclass=file permissive=0 ++type=AVC msg=audit(1516626657.910:4461): avc: denied { getattr } for pid=4310 comm="test" path="/root/test" ino=8619937 scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:test_file_t:s0 tclass=dir permissive=0 ++""" ++xperms_invalid = """type=AVC msg=audit(1516626657.910:4461): avc: denied { ioctl } for pid=4310 comm="test" path="/root/test" ino=8619937 ioctlcmd=asdf scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:test_file_t:s0 tclass=file permissive=0 ++""" ++xperms_without = """type=AVC msg=audit(1516626657.910:4461): avc: denied { ioctl } for pid=4310 comm="test" path="/root/test" ino=8619937 scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:test_file_t:s0 tclass=file permissive=0 ++""" ++ + class TestAVCMessage(unittest.TestCase): + def test_defs(self): + avc = sepolgen.audit.AVCMessage(audit1) +@@ -64,6 +76,7 @@ class TestAVCMessage(unittest.TestCase): + self.assertEqual(avc.tcontext, sc) + self.assertEqual(avc.tclass, "") + self.assertEqual(avc.accesses, []) ++ self.assertEqual(avc.ioctlcmd, None) + + def test_granted(self): + avc = sepolgen.audit.AVCMessage(granted1) +@@ -84,6 +97,29 @@ class TestAVCMessage(unittest.TestCase): + + self.assertEqual(avc.denial, False) + ++ def test_xperms(self): ++ """Test that the ioctlcmd field is parsed""" ++ avc = sepolgen.audit.AVCMessage(xperms1) ++ recs = xperms1.split() ++ avc.from_split_string(recs) ++ ++ self.assertEqual(avc.ioctlcmd, 66) ++ ++ def test_xperms_invalid(self): ++ """Test message with invalid value in the ioctlcmd field""" ++ avc = sepolgen.audit.AVCMessage(xperms_invalid) ++ recs = xperms_invalid.split() ++ avc.from_split_string(recs) ++ ++ self.assertIsNone(avc.ioctlcmd) ++ ++ def test_xperms_without(self): ++ """Test message without the ioctlcmd field""" ++ avc = sepolgen.audit.AVCMessage(xperms_without) ++ recs = xperms_without.split() ++ avc.from_split_string(recs) ++ ++ self.assertIsNone(avc.ioctlcmd) + + def test_from_split_string(self): + # syslog message +@@ -172,6 +208,20 @@ class TestAuditParser(unittest.TestCase): + self.assertEqual(len(a.invalid_msgs), 0) + self.assertEqual(len(a.policy_load_msgs), 0) + ++ def test_parse_xperms(self): ++ """ Test that correct access vectors are generated from a set of AVC ++ denial messages. """ ++ a = sepolgen.audit.AuditParser() ++ a.parse_string(xperms2) ++ av_set = a.to_access() ++ ++ self.assertEqual(len(av_set), 2) ++ av_list = list(sorted(av_set)) ++ self.assertEqual(av_list[0].xperms, {}) ++ self.assertEqual(list(av_list[1].xperms), ["ioctl"]) ++ self.assertEqual(av_list[1].xperms["ioctl"].ranges, [(66,66), ++ (4660,4660), (57005,57005)]) ++ + class TestGeneration(unittest.TestCase): + def test_generation(self): + parser = sepolgen.audit.AuditParser() +diff --git selinux-python-2.8/sepolgen/tests/test_policygen.py selinux-python-2.8/sepolgen/tests/test_policygen.py +index 58d1adf..59496e8 100644 +--- selinux-python-2.8/sepolgen/tests/test_policygen.py ++++ selinux-python-2.8/sepolgen/tests/test_policygen.py +@@ -19,13 +19,117 @@ + + import unittest + import sepolgen.policygen as policygen ++import sepolgen.access as access ++import sepolgen.refpolicy as refpolicy + +-class PolicyGenerator(unittest.TestCase): +- def __init__(self): +- g = policygen.PolicyGenerator() +- ++class TestPolicyGenerator(unittest.TestCase): ++ def setUp(self): ++ self.g = policygen.PolicyGenerator() + ++ def test_init(self): ++ """ Test that extended permission AV rules are not generated by ++ default. """ ++ self.assertFalse(self.g.xperms) + ++ def test_set_gen_xperms(self): ++ """ Test turning on and off generating of extended permission ++ AV rules. """ ++ self.g.set_gen_xperms(True) ++ self.assertTrue(self.g.xperms) ++ self.g.set_gen_xperms(False) ++ self.assertFalse(self.g.xperms) + ++ def test_av_rules(self): ++ """ Test generating of AV rules from access vectors. """ ++ av1 = access.AccessVector(["test_src_t", "test_tgt_t", "file", "ioctl"]) ++ av2 = access.AccessVector(["test_src_t", "test_tgt_t", "file", "open"]) ++ av3 = access.AccessVector(["test_src_t", "test_tgt_t", "file", "read"]) + ++ avs = access.AccessVectorSet() ++ avs.add_av(av1) ++ avs.add_av(av2) ++ avs.add_av(av3) ++ ++ self.g.add_access(avs) ++ ++ self.assertEqual(len(self.g.module.children), 1) ++ r = self.g.module.children[0] ++ self.assertIsInstance(r, refpolicy.AVRule) ++ self.assertEqual(r.to_string(), ++ "allow test_src_t test_tgt_t:file { ioctl open read };") ++ ++ def test_ext_av_rules(self): ++ """ Test generating of extended permission AV rules from access ++ vectors. """ ++ self.g.set_gen_xperms(True) ++ ++ av1 = access.AccessVector(["test_src_t", "test_tgt_t", "file", "ioctl"]) ++ av1.xperms['ioctl'] = refpolicy.XpermSet() ++ av1.xperms['ioctl'].add(42) ++ av2 = access.AccessVector(["test_src_t", "test_tgt_t", "file", "ioctl"]) ++ av2.xperms['ioctl'] = refpolicy.XpermSet() ++ av2.xperms['ioctl'].add(1234) ++ av3 = access.AccessVector(["test_src_t", "test_tgt_t", "dir", "ioctl"]) ++ av3.xperms['ioctl'] = refpolicy.XpermSet() ++ av3.xperms['ioctl'].add(2345) ++ ++ avs = access.AccessVectorSet() ++ avs.add_av(av1) ++ avs.add_av(av2) ++ avs.add_av(av3) ++ ++ self.g.add_access(avs) ++ ++ self.assertEqual(len(self.g.module.children), 4) ++ ++ # we cannot sort the rules, so find all rules manually ++ av_rule1 = av_rule2 = av_ext_rule1 = av_ext_rule2 = None ++ ++ for r in self.g.module.children: ++ if isinstance(r, refpolicy.AVRule): ++ if 'file' in r.obj_classes: ++ av_rule1 = r ++ else: ++ av_rule2 = r ++ elif isinstance(r, refpolicy.AVExtRule): ++ if 'file' in r.obj_classes: ++ av_ext_rule1 = r ++ else: ++ av_ext_rule2 = r ++ else: ++ self.fail("Unexpected rule type '%s'" % type(r)) ++ ++ # check that all rules are present ++ self.assertNotIn(None, (av_rule1, av_rule2, av_ext_rule1, av_ext_rule2)) ++ ++ self.assertEqual(av_rule1.rule_type, av_rule1.ALLOW) ++ self.assertEqual(av_rule1.src_types, {"test_src_t"}) ++ self.assertEqual(av_rule1.tgt_types, {"test_tgt_t"}) ++ self.assertEqual(av_rule1.obj_classes, {"file"}) ++ self.assertEqual(av_rule1.perms, {"ioctl"}) ++ ++ self.assertEqual(av_ext_rule1.rule_type, av_ext_rule1.ALLOWXPERM) ++ self.assertEqual(av_ext_rule1.src_types, {"test_src_t"}) ++ self.assertEqual(av_ext_rule1.tgt_types, {"test_tgt_t"}) ++ self.assertEqual(av_ext_rule1.obj_classes, {"file"}) ++ self.assertEqual(av_ext_rule1.operation, "ioctl") ++ xp1 = refpolicy.XpermSet() ++ xp1.add(42) ++ xp1.add(1234) ++ self.assertEqual(av_ext_rule1.xperms.ranges, xp1.ranges) ++ ++ self.assertEqual(av_rule2.rule_type, av_rule2.ALLOW) ++ self.assertEqual(av_rule2.src_types, {"test_src_t"}) ++ self.assertEqual(av_rule2.tgt_types, {"test_tgt_t"}) ++ self.assertEqual(av_rule2.obj_classes, {"dir"}) ++ self.assertEqual(av_rule2.perms, {"ioctl"}) ++ ++ self.assertEqual(av_ext_rule2.rule_type, av_ext_rule2.ALLOWXPERM) ++ self.assertEqual(av_ext_rule2.src_types, {"test_src_t"}) ++ self.assertEqual(av_ext_rule2.tgt_types, {"test_tgt_t"}) ++ self.assertEqual(av_ext_rule2.obj_classes, {"dir"}) ++ self.assertEqual(av_ext_rule2.operation, "ioctl") ++ xp2 = refpolicy.XpermSet() ++ xp2.add(2345) ++ self.assertEqual(av_ext_rule2.xperms.ranges, xp2.ranges) + +diff --git selinux-python-2.8/sepolgen/tests/test_refpolicy.py selinux-python-2.8/sepolgen/tests/test_refpolicy.py +index 16e6680..64c48df 100644 +--- selinux-python-2.8/sepolgen/tests/test_refpolicy.py ++++ selinux-python-2.8/sepolgen/tests/test_refpolicy.py +@@ -19,6 +19,7 @@ + + import unittest + import sepolgen.refpolicy as refpolicy ++import sepolgen.access as access + import selinux + + class TestIdSet(unittest.TestCase): +@@ -33,6 +34,74 @@ class TestIdSet(unittest.TestCase): + s.add("read") + self.assertEqual(s.to_space_str(), "read") + ++class TestXpermSet(unittest.TestCase): ++ def test_init(self): ++ """ Test that all atttributes are correctly initialized. """ ++ s1 = refpolicy.XpermSet() ++ self.assertEqual(s1.complement, False) ++ self.assertEqual(s1.ranges, []) ++ ++ s2 = refpolicy.XpermSet(True) ++ self.assertEqual(s2.complement, True) ++ self.assertEqual(s2.ranges, []) ++ ++ def test_normalize_ranges(self): ++ """ Test that ranges that are overlapping or neighboring are correctly ++ merged into one range. """ ++ s = refpolicy.XpermSet() ++ s.ranges = [(1, 7), (5, 10), (100, 110), (102, 107), (200, 205), ++ (205, 210), (300, 305), (306, 310), (400, 405), (407, 410), ++ (500, 502), (504, 508), (500, 510)] ++ s._XpermSet__normalize_ranges() ++ ++ i = 0 ++ r = list(sorted(s.ranges)) ++ while i < len(r) - 1: ++ # check that range low bound is less than equal than the upper bound ++ self.assertLessEqual(r[i][0], r[i][1]) ++ # check that two ranges are not overlapping or neighboring ++ self.assertGreater(r[i + 1][0] - r[i][1], 1) ++ i += 1 ++ ++ def test_add(self): ++ """ Test adding new values or ranges to the set. """ ++ s = refpolicy.XpermSet() ++ s.add(1, 7) ++ s.add(5, 10) ++ s.add(42) ++ self.assertEqual(s.ranges, [(1,10), (42,42)]) ++ ++ def test_extend(self): ++ """ Test adding ranges from another XpermSet object. """ ++ a = refpolicy.XpermSet() ++ a.add(1, 7) ++ ++ b = refpolicy.XpermSet() ++ b.add(5, 10) ++ ++ a.extend(b) ++ self.assertEqual(a.ranges, [(1,10)]) ++ ++ def test_to_string(self): ++ """ Test printing the values to a string. """ ++ a = refpolicy.XpermSet() ++ a.complement = False ++ self.assertEqual(a.to_string(), "") ++ a.complement = True ++ self.assertEqual(a.to_string(), "") ++ a.add(1234) ++ self.assertEqual(a.to_string(), "~ 1234") ++ a.complement = False ++ self.assertEqual(a.to_string(), "1234") ++ a.add(2345) ++ self.assertEqual(a.to_string(), "{ 1234 2345 }") ++ a.complement = True ++ self.assertEqual(a.to_string(), "~ { 1234 2345 }") ++ a.add(42,64) ++ self.assertEqual(a.to_string(), "~ { 42-64 1234 2345 }") ++ a.complement = False ++ self.assertEqual(a.to_string(), "{ 42-64 1234 2345 }") ++ + class TestSecurityContext(unittest.TestCase): + def test_init(self): + sc = refpolicy.SecurityContext() +@@ -110,6 +179,76 @@ class TestAVRule(unittest.TestCase): + b.sort() + self.assertEqual(a, b) + ++class TestAVExtRule(unittest.TestCase): ++ def test_init(self): ++ """ Test initialization of attributes """ ++ a = refpolicy.AVExtRule() ++ self.assertEqual(a.rule_type, a.ALLOWXPERM) ++ self.assertIsInstance(a.src_types, set) ++ self.assertIsInstance(a.tgt_types, set) ++ self.assertIsInstance(a.obj_classes, set) ++ self.assertIsNone(a.operation) ++ self.assertIsInstance(a.xperms, refpolicy.XpermSet) ++ ++ def test_rule_type_str(self): ++ """ Test strings returned by __rule_type_str() """ ++ a = refpolicy.AVExtRule() ++ self.assertEqual(a._AVExtRule__rule_type_str(), "allowxperm") ++ a.rule_type = a.ALLOWXPERM ++ self.assertEqual(a._AVExtRule__rule_type_str(), "allowxperm") ++ a.rule_type = a.DONTAUDITXPERM ++ self.assertEqual(a._AVExtRule__rule_type_str(), "dontauditxperm") ++ a.rule_type = a.NEVERALLOWXPERM ++ self.assertEqual(a._AVExtRule__rule_type_str(), "neverallowxperm") ++ a.rule_type = a.AUDITALLOWXPERM ++ self.assertEqual(a._AVExtRule__rule_type_str(), "auditallowxperm") ++ a.rule_type = 42 ++ self.assertIsNone(a._AVExtRule__rule_type_str()) ++ ++ def test_from_av(self): ++ """ Test creating the rule from an access vector. """ ++ av = access.AccessVector(["foo", "bar", "file", "ioctl"]) ++ xp = refpolicy.XpermSet() ++ av.xperms = { "ioctl": xp } ++ ++ a = refpolicy.AVExtRule() ++ ++ a.from_av(av, "ioctl") ++ self.assertEqual(a.src_types, {"foo"}) ++ self.assertEqual(a.tgt_types, {"bar"}) ++ self.assertEqual(a.obj_classes, {"file"}) ++ self.assertEqual(a.operation, "ioctl") ++ self.assertIs(a.xperms, xp) ++ ++ def test_from_av_self(self): ++ """ Test creating the rule from an access vector that has same ++ source and target context. """ ++ av = access.AccessVector(["foo", "foo", "file", "ioctl"]) ++ xp = refpolicy.XpermSet() ++ av.xperms = { "ioctl": xp } ++ ++ a = refpolicy.AVExtRule() ++ ++ a.from_av(av, "ioctl") ++ self.assertEqual(a.src_types, {"foo"}) ++ self.assertEqual(a.tgt_types, {"self"}) ++ self.assertEqual(a.obj_classes, {"file"}) ++ self.assertEqual(a.operation, "ioctl") ++ self.assertIs(a.xperms, xp) ++ ++ def test_to_string(self): ++ """ Test printing the rule to a string. """ ++ a = refpolicy.AVExtRule() ++ a._AVExtRule__rule_type_str = lambda: "first" ++ a.src_types.to_space_str = lambda: "second" ++ a.tgt_types.to_space_str = lambda: "third" ++ a.obj_classes.to_space_str = lambda: "fourth" ++ a.operation = "fifth" ++ a.xperms.to_string = lambda: "seventh" ++ ++ self.assertEqual(a.to_string(), ++ "first second third:fourth fifth seventh;") ++ + class TestTypeRule(unittest.TestCase): + def test_init(self): + a = refpolicy.TypeRule() +diff --git selinux-python-2.8/sepolicy/sepolicy.py selinux-python-2.8/sepolicy/sepolicy.py +index 141f64e..5880176 100755 +--- selinux-python-2.8/sepolicy/sepolicy.py ++++ selinux-python-2.8/sepolicy/sepolicy.py +@@ -27,7 +27,7 @@ import selinux + import sepolicy + from sepolicy import get_os_version, get_conditionals, get_conditionals_format_text + import argparse +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-python" + try: + import gettext + kwargs = {} +@@ -60,8 +60,6 @@ class CheckPath(argparse.Action): + class CheckType(argparse.Action): + + def __call__(self, parser, namespace, values, option_string=None): +- domains = sepolicy.get_all_domains() +- + if isinstance(values, str): + setattr(namespace, self.dest, values) + else: +@@ -103,6 +101,7 @@ class CheckDomain(argparse.Action): + domains = sepolicy.get_all_domains() + + if isinstance(values, str): ++ values = sepolicy.get_real_type_name(values) + if values not in domains: + raise ValueError("%s must be an SELinux process domain:\nValid domains: %s" % (values, ", ".join(domains))) + setattr(namespace, self.dest, values) +@@ -112,6 +111,7 @@ class CheckDomain(argparse.Action): + newval = [] + + for v in values: ++ v = sepolicy.get_real_type_name(v) + if v not in domains: + raise ValueError("%s must be an SELinux process domain:\nValid domains: %s" % (v, ", ".join(domains))) + newval.append(v) +@@ -167,10 +167,11 @@ class CheckPortType(argparse.Action): + if not newval: + newval = [] + for v in values: ++ v = sepolicy.get_real_type_name(v) + if v not in port_types: + raise ValueError("%s must be an SELinux port type:\nValid port types: %s" % (v, ", ".join(port_types))) + newval.append(v) +- setattr(namespace, self.dest, values) ++ setattr(namespace, self.dest, newval) + + + class LoadPolicy(argparse.Action): +diff --git selinux-python-2.8/sepolicy/sepolicy/__init__.py selinux-python-2.8/sepolicy/sepolicy/__init__.py +index 89346ab..6039489 100644 +--- selinux-python-2.8/sepolicy/sepolicy/__init__.py ++++ selinux-python-2.8/sepolicy/sepolicy/__init__.py +@@ -15,7 +15,7 @@ import os + import re + import gzip + +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-python" + try: + import gettext + kwargs = {} +@@ -129,6 +129,13 @@ def get_installed_policy(root="/"): + pass + raise ValueError(_("No SELinux Policy installed")) + ++def get_store_policy(store, root="/"): ++ try: ++ policies = glob.glob("%s%s/policy/policy.*" % (selinux.selinux_path(), store)) ++ policies.sort() ++ return policies[-1] ++ except: ++ return None + + def policy(policy_file): + global all_domains +@@ -156,6 +163,11 @@ def policy(policy_file): + except: + raise ValueError(_("Failed to read %s policy file") % policy_file) + ++def load_store_policy(store): ++ policy_file = get_store_policy(store) ++ if not policy_file: ++ return None ++ policy(policy_file) + + try: + policy_file = get_installed_policy() +@@ -168,15 +180,21 @@ except ValueError as e: + def info(setype, name=None): + if setype == TYPE: + q = setools.TypeQuery(_pol) +- if name: +- q.name = name ++ q.name = name ++ results = list(q.results()) ++ ++ if name and len(results) < 1: ++ # type not found, try alias ++ q.name = None ++ q.alias = name ++ results = list(q.results()) + + return ({ + 'aliases': list(map(str, x.aliases())), + 'name': str(x), + 'permissive': bool(x.ispermissive), + 'attributes': list(map(str, x.attributes())) +- } for x in q.results()) ++ } for x in results) + + elif setype == ROLE: + q = setools.RoleQuery(_pol) +@@ -272,34 +290,38 @@ def _setools_rule_to_dict(rule): + 'class': str(rule.tclass), + } + ++ # Evaluate boolean expression associated with given rule (if there is any) + try: +- enabled = bool(rule.qpol_symbol.is_enabled(rule.policy)) ++ # Get state of all booleans in the conditional expression ++ boolstate = {} ++ for boolean in rule.conditional.booleans: ++ boolstate[str(boolean)] = boolean.state ++ # evaluate if the rule is enabled ++ enabled = rule.conditional.evaluate(**boolstate) == rule.conditional_block + except AttributeError: ++ # non-conditional rules are always enabled + enabled = True + +- if isinstance(rule, setools.policyrep.terule.AVRule): +- d['enabled'] = enabled ++ d['enabled'] = enabled + + try: + d['permlist'] = list(map(str, rule.perms)) +- except setools.policyrep.exception.RuleUseError: ++ except AttributeError: + pass + + try: + d['transtype'] = str(rule.default) +- except setools.policyrep.exception.RuleUseError: ++ except AttributeError: + pass + + try: + d['boolean'] = [(str(rule.conditional), enabled)] +- except (AttributeError, setools.policyrep.exception.RuleNotConditional): ++ except AttributeError: + pass + + try: + d['filename'] = rule.filename +- except (AttributeError, +- setools.policyrep.exception.RuleNotConditional, +- setools.policyrep.exception.TERuleNoFilename): ++ except AttributeError: + pass + + return d +@@ -334,6 +356,8 @@ def search(types, seinfo=None): + tertypes.append(NEVERALLOW) + if AUDITALLOW in types: + tertypes.append(AUDITALLOW) ++ if DONTAUDIT in types: ++ tertypes.append(DONTAUDIT) + + if len(tertypes) > 0: + q = setools.TERuleQuery(_pol, +@@ -437,6 +461,20 @@ def get_file_types(setype): + return mpaths + + ++def get_real_type_name(name): ++ """Return the real name of a type ++ ++ * If 'name' refers to a type alias, return the corresponding type name. ++ * Otherwise return the original name (even if the type does not exist). ++ """ ++ if not name: ++ return name ++ ++ try: ++ return next(info(TYPE, name))["name"] ++ except (RuntimeError, StopIteration): ++ return name ++ + def get_writable_files(setype): + file_types = get_all_file_types() + all_writes = [] +@@ -1048,6 +1086,8 @@ def _dict_has_perms(dict, perms): + def gen_short_name(setype): + all_domains = get_all_domains() + if setype.endswith("_t"): ++ # replace aliases with corresponding types ++ setype = get_real_type_name(setype) + domainname = setype[:-2] + else: + domainname = setype +@@ -1160,27 +1200,14 @@ def boolean_desc(boolean): + + + def get_os_version(): +- os_version = "" +- pkg_name = "selinux-policy" ++ system_release = "" + try: +- try: +- from commands import getstatusoutput +- except ImportError: +- from subprocess import getstatusoutput +- rc, output = getstatusoutput("rpm -q '%s'" % pkg_name) +- if rc == 0: +- os_version = output.split(".")[-2] +- except: +- os_version = "" +- +- if os_version[0:2] == "fc": +- os_version = "Fedora" + os_version[2:] +- elif os_version[0:2] == "el": +- os_version = "RHEL" + os_version[2:] +- else: +- os_version = "" ++ with open('/etc/system-release') as f: ++ system_release = f.readline().rstrip() ++ except IOError: ++ system_release = "Misc" + +- return os_version ++ return system_release + + + def reinit(): +diff --git selinux-python-2.8/sepolicy/sepolicy/generate.py selinux-python-2.8/sepolicy/sepolicy/generate.py +index f814e27..8e53033 100644 +--- selinux-python-2.8/sepolicy/sepolicy/generate.py ++++ selinux-python-2.8/sepolicy/sepolicy/generate.py +@@ -52,7 +52,7 @@ import sepolgen.defaults as defaults + ## + ## I18N + ## +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-python" + try: + import gettext + kwargs = {} +@@ -103,7 +103,9 @@ def get_all_ports(): + for p in sepolicy.info(sepolicy.PORT): + if p['type'] == "reserved_port_t" or \ + p['type'] == "port_t" or \ +- p['type'] == "hi_reserved_port_t": ++ p['type'] == "hi_reserved_port_t" or \ ++ p['type'] == "ephemeral_port_t" or \ ++ p['type'] == "unreserved_port_t": + continue + dict[(p['low'], p['high'], p['protocol'])] = (p['type'], p.get('range')) + return dict +diff --git selinux-python-2.8/sepolicy/sepolicy/gui.py selinux-python-2.8/sepolicy/sepolicy/gui.py +index 537d516..63aa02c 100644 +--- selinux-python-2.8/sepolicy/sepolicy/gui.py ++++ selinux-python-2.8/sepolicy/sepolicy/gui.py +@@ -43,7 +43,7 @@ import os + import re + import unicodedata + +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-python" + try: + import gettext + kwargs = {} +diff --git selinux-python-2.8/sepolicy/sepolicy/interface.py selinux-python-2.8/sepolicy/sepolicy/interface.py +index 18374dc..ca0122d 100644 +--- selinux-python-2.8/sepolicy/sepolicy/interface.py ++++ selinux-python-2.8/sepolicy/sepolicy/interface.py +@@ -32,7 +32,7 @@ __all__ = ['get_all_interfaces', 'get_interfaces_from_xml', 'get_admin', 'get_us + ## + ## I18N + ## +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-python" + try: + import gettext + kwargs = {} +diff --git selinux-python-2.8/sepolicy/sepolicy/manpage.py selinux-python-2.8/sepolicy/sepolicy/manpage.py +index ed8cb71..8121e5c 100755 +--- selinux-python-2.8/sepolicy/sepolicy/manpage.py ++++ selinux-python-2.8/sepolicy/sepolicy/manpage.py +@@ -126,8 +126,33 @@ def gen_domains(): + domains.sort() + return domains + +-types = None + ++exec_types = None ++ ++def _gen_exec_types(): ++ global exec_types ++ if exec_types is None: ++ exec_types = next(sepolicy.info(sepolicy.ATTRIBUTE, "exec_type"))["types"] ++ return exec_types ++ ++entry_types = None ++ ++def _gen_entry_types(): ++ global entry_types ++ if entry_types is None: ++ entry_types = next(sepolicy.info(sepolicy.ATTRIBUTE, "entry_type"))["types"] ++ return entry_types ++ ++mcs_constrained_types = None ++ ++def _gen_mcs_constrained_types(): ++ global mcs_constrained_types ++ if mcs_constrained_types is None: ++ mcs_constrained_types = next(sepolicy.info(sepolicy.ATTRIBUTE, "mcs_constrained_type")) ++ return mcs_constrained_types ++ ++ ++types = None + + def _gen_types(): + global types +@@ -150,10 +175,6 @@ def prettyprint(f, trim): + manpage_domains = [] + manpage_roles = [] + +-fedora_releases = ["Fedora17", "Fedora18"] +-rhel_releases = ["RHEL6", "RHEL7"] +- +- + def get_alphabet_manpages(manpage_list): + alphabet_manpages = dict.fromkeys(string.ascii_letters, []) + for i in string.ascii_letters: +@@ -183,7 +204,7 @@ def convert_manpage_to_html(html_manpage, manpage): + class HTMLManPages: + + """ +- Generate a HHTML Manpages on an given SELinux domains ++ Generate a HTML Manpages on an given SELinux domains + """ + + def __init__(self, manpage_roles, manpage_domains, path, os_version): +@@ -191,9 +212,9 @@ class HTMLManPages: + self.manpage_domains = get_alphabet_manpages(manpage_domains) + self.os_version = os_version + self.old_path = path + "/" +- self.new_path = self.old_path + self.os_version + "/" ++ self.new_path = self.old_path + +- if self.os_version in fedora_releases or self.os_version in rhel_releases: ++ if self.os_version: + self.__gen_html_manpages() + else: + print("SELinux HTML man pages can not be generated for this %s" % os_version) +@@ -202,7 +223,6 @@ class HTMLManPages: + def __gen_html_manpages(self): + self._write_html_manpage() + self._gen_index() +- self._gen_body() + self._gen_css() + + def _write_html_manpage(self): +@@ -220,67 +240,21 @@ class HTMLManPages: + convert_manpage_to_html((self.new_path + r.rsplit("_selinux", 1)[0] + ".html"), self.old_path + r) + + def _gen_index(self): +- index = self.old_path + "index.html" +- fd = open(index, 'w') +- fd.write(""" +- +- +- +- SELinux man pages online +- +- +-

SELinux man pages

+-

+-Fedora or Red Hat Enterprise Linux Man Pages. +-

+-
+-

Fedora

+- +- +-
+-
+-
+-""")
+-        for f in fedora_releases:
+-            fd.write("""
+-%s - SELinux man pages for %s """ % (f, f, f, f))
+-
+-        fd.write("""
+-
+-
+-

RHEL

+- +- +-
+-
+-
+-""")
+-        for r in rhel_releases:
+-            fd.write("""
+-%s - SELinux man pages for %s """ % (r, r, r, r))
+-
+-        fd.write("""
+-
+- """) +- fd.close() +- print("%s has been created" % index) +- +- def _gen_body(self): + html = self.new_path + self.os_version + ".html" + fd = open(html, 'w') + fd.write(""" + + +- +- Linux man-pages online for Fedora18 ++ ++ SELinux man pages + + +-

SELinux man pages for Fedora18

++

SELinux man pages for %s

+
+ +
+

SELinux roles

+-""") ++""" % self.os_version) + for letter in self.manpage_roles: + if len(self.manpage_roles[letter]): + fd.write(""" +@@ -424,6 +398,9 @@ class ManPage: + self.all_file_types = sepolicy.get_all_file_types() + self.role_allows = sepolicy.get_all_role_allows() + self.types = _gen_types() ++ self.exec_types = _gen_exec_types() ++ self.entry_types = _gen_entry_types() ++ self.mcs_constrained_types = _gen_mcs_constrained_types() + + if self.source_files: + self.fcpath = self.root + "file_contexts" +@@ -736,10 +713,13 @@ Default Defined Ports:""") + + def _file_context(self): + flist = [] ++ flist_non_exec = [] + mpaths = [] + for f in self.all_file_types: + if f.startswith(self.domainname): + flist.append(f) ++ if not f in self.exec_types or not f in self.entry_types: ++ flist_non_exec.append(f) + if f in self.fcdict: + mpaths = mpaths + self.fcdict[f]["regex"] + if len(mpaths) == 0: +@@ -791,19 +771,20 @@ SELinux %(domainname)s policy is very flexible allowing users to setup their %(d + .PP + """ % {'domainname': self.domainname, 'equiv': e, 'alt': e.split('/')[-1]}) + +- self.fd.write(r""" ++ if flist_non_exec: ++ self.fd.write(r""" + .PP + .B STANDARD FILE CONTEXT + + SELinux defines the file context types for the %(domainname)s, if you wanted to + store files with these types in a diffent paths, you need to execute the semanage command to sepecify alternate labeling and then use restorecon to put the labels on disk. + +-.B semanage fcontext -a -t %(type)s '/srv/%(domainname)s/content(/.*)?' ++.B semanage fcontext -a -t %(type)s '/srv/my%(domainname)s_content(/.*)?' + .br + .B restorecon -R -v /srv/my%(domainname)s_content + + Note: SELinux often uses regular expressions to specify labels that match multiple files. +-""" % {'domainname': self.domainname, "type": flist[0]}) ++""" % {'domainname': self.domainname, "type": flist_non_exec[-1]}) + + self.fd.write(r""" + .I The following file types are defined for %(domainname)s: +@@ -974,11 +955,7 @@ All executeables with the default executable label, usually stored in /usr/bin a + %s""" % ", ".join(paths)) + + def _mcs_types(self): +- try: +- mcs_constrained_type = next(sepolicy.info(sepolicy.ATTRIBUTE, "mcs_constrained_type")) +- except StopIteration: +- return +- if self.type not in mcs_constrained_type['types']: ++ if self.type not in self.mcs_constrained_types['types']: + return + self.fd.write (""" + .SH "MCS Constrained" diff --git a/SOURCES/selinux-sandbox-fedora.patch b/SOURCES/selinux-sandbox-fedora.patch new file mode 100644 index 0000000..4986b98 --- /dev/null +++ b/SOURCES/selinux-sandbox-fedora.patch @@ -0,0 +1,186 @@ +diff --git selinux-sandbox-2.8/Makefile selinux-sandbox-2.8/Makefile +index 49c1d3f..9e45329 100644 +--- selinux-sandbox-2.8/Makefile ++++ selinux-sandbox-2.8/Makefile +@@ -12,6 +12,7 @@ override LDLIBS += -lselinux -lcap-ng + SEUNSHARE_OBJS = seunshare.o + + all: sandbox seunshare sandboxX.sh start ++ (cd po && $(MAKE) $@) + + seunshare: $(SEUNSHARE_OBJS) + +@@ -30,6 +31,7 @@ install: all + install -m 755 start $(DESTDIR)$(SHAREDIR) + -mkdir -p $(DESTDIR)$(SYSCONFDIR) + install -m 644 sandbox.conf $(DESTDIR)$(SYSCONFDIR)/sandbox ++ (cd po && $(MAKE) $@) + + test: + @$(PYTHON) test_sandbox.py -v +diff --git selinux-sandbox-2.8/po/Makefile selinux-sandbox-2.8/po/Makefile +new file mode 100644 +index 0000000..0556bbe +--- /dev/null ++++ selinux-sandbox-2.8/po/Makefile +@@ -0,0 +1,82 @@ ++# ++# Makefile for the PO files (translation) catalog ++# ++ ++PREFIX ?= /usr ++ ++# What is this package? ++NLSPACKAGE = sandbox ++POTFILE = $(NLSPACKAGE).pot ++INSTALL = /usr/bin/install -c -p ++INSTALL_DATA = $(INSTALL) -m 644 ++INSTALL_DIR = /usr/bin/install -d ++ ++# destination directory ++INSTALL_NLS_DIR = $(PREFIX)/share/locale ++ ++# PO catalog handling ++MSGMERGE = msgmerge ++MSGMERGE_FLAGS = -q ++XGETTEXT = xgettext -L Python --default-domain=$(NLSPACKAGE) ++MSGFMT = msgfmt ++ ++# All possible linguas ++PO_LINGUAS := $(sort $(patsubst %.po,%,$(wildcard *.po))) ++ ++# Only the files matching what the user has set in LINGUAS ++USER_LINGUAS := $(filter $(patsubst %,%%,$(LINGUAS)),$(PO_LINGUAS)) ++ ++# if no valid LINGUAS, build all languages ++USE_LINGUAS := $(if $(USER_LINGUAS),$(USER_LINGUAS),$(PO_LINGUAS)) ++ ++POFILES = $(patsubst %,%.po,$(USE_LINGUAS)) ++MOFILES = $(patsubst %.po,%.mo,$(POFILES)) ++POTFILES = $(shell cat POTFILES) ++ ++#default:: clean ++ ++all:: $(POTFILE) $(MOFILES) ++ ++$(POTFILE): $(POTFILES) ++ $(XGETTEXT) --keyword=_ --keyword=N_ $(POTFILES) ++ @if cmp -s $(NLSPACKAGE).po $(POTFILE); then \ ++ rm -f $(NLSPACKAGE).po; \ ++ else \ ++ mv -f $(NLSPACKAGE).po $(POTFILE); \ ++ fi; \ ++ ++ ++refresh-po: Makefile ++ for cat in $(POFILES); do \ ++ lang=`basename $$cat .po`; \ ++ if $(MSGMERGE) $(MSGMERGE_FLAGS) $$lang.po $(POTFILE) > $$lang.pot ; then \ ++ mv -f $$lang.pot $$lang.po ; \ ++ echo "$(MSGMERGE) of $$lang succeeded" ; \ ++ else \ ++ echo "$(MSGMERGE) of $$lang failed" ; \ ++ rm -f $$lang.pot ; \ ++ fi \ ++ done ++ ++clean: ++ @rm -fv *mo *~ .depend ++ @rm -rf tmp ++ ++install: $(MOFILES) ++ @for n in $(MOFILES); do \ ++ l=`basename $$n .mo`; \ ++ $(INSTALL_DIR) $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES; \ ++ $(INSTALL_DATA) --verbose $$n $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES/selinux-$(NLSPACKAGE).mo; \ ++ done ++ ++%.mo: %.po ++ $(MSGFMT) -o $@ $< ++report: ++ @for cat in $(wildcard *.po); do \ ++ echo -n "$$cat: "; \ ++ msgfmt -v --statistics -o /dev/null $$cat; \ ++ done ++ ++.PHONY: missing depend ++ ++relabel: +diff --git selinux-sandbox-2.8/po/POTFILES selinux-sandbox-2.8/po/POTFILES +new file mode 100644 +index 0000000..deff3f2 +--- /dev/null ++++ selinux-sandbox-2.8/po/POTFILES +@@ -0,0 +1 @@ ++../sandbox +diff --git selinux-sandbox-2.8/sandbox selinux-sandbox-2.8/sandbox +index c07a1d8..948496d 100644 +--- selinux-sandbox-2.8/sandbox ++++ selinux-sandbox-2.8/sandbox +@@ -37,7 +37,7 @@ import sepolicy + + SEUNSHARE = "/usr/sbin/seunshare" + SANDBOXSH = "/usr/share/sandbox/sandboxX.sh" +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-sandbox" + try: + import gettext + kwargs = {} +@@ -268,7 +268,7 @@ class Sandbox: + copyfile(f, "/tmp", self.__tmpdir) + copyfile(f, "/var/tmp", self.__tmpdir) + +- def __setup_sandboxrc(self, wm="/usr/bin/openbox"): ++ def __setup_sandboxrc(self, wm="/usr/bin/matchbox-window-manager"): + execfile = self.__homedir + "/.sandboxrc" + fd = open(execfile, "w+") + if self.__options.session: +@@ -362,7 +362,7 @@ sandbox [-h] [-l level ] [-[X|M] [-H homedir] [-T tempdir]] [-I includefile ] [- + + parser.add_option("-W", "--windowmanager", dest="wm", + type="string", +- default="/usr/bin/openbox", ++ default="/usr/bin/matchbox-window-manager", + help=_("alternate window manager")) + + parser.add_option("-l", "--level", dest="level", +diff --git selinux-sandbox-2.8/sandbox.8 selinux-sandbox-2.8/sandbox.8 +index d83fee7..90ef495 100644 +--- selinux-sandbox-2.8/sandbox.8 ++++ selinux-sandbox-2.8/sandbox.8 +@@ -77,7 +77,7 @@ Specifies the windowsize when creating an X based Sandbox. The default windowsiz + \fB\-W\fR \fB\-\-windowmanager\fR + Select alternative window manager to run within + .B sandbox \-X. +-Default to /usr/bin/openbox. ++Default to /usr/bin/matchbox-window-manager. + .TP + \fB\-X\fR + Create an X based Sandbox for gui apps, temporary files for +diff --git selinux-sandbox-2.8/sandboxX.sh selinux-sandbox-2.8/sandboxX.sh +index eaa500d..c211ebc 100644 +--- selinux-sandbox-2.8/sandboxX.sh ++++ selinux-sandbox-2.8/sandboxX.sh +@@ -6,21 +6,7 @@ export TITLE="Sandbox $context -- `grep ^#TITLE: ~/.sandboxrc | /usr/bin/cut -b8 + [ -z $2 ] && export DPI="96" || export DPI="$2" + trap "exit 0" HUP + +-mkdir -p ~/.config/openbox +-cat > ~/.config/openbox/rc.xml << EOF +- +- +- +- no +- all +- yes +- +- +- +-EOF +- +-(/usr/bin/Xephyr -resizeable -title "$TITLE" -terminate -screen $SCREENSIZE -dpi $DPI -nolisten tcp -displayfd 5 5>&1 2>/dev/null) | while read D; do ++(/usr/bin/Xephyr -resizeable -title "$TITLE" -terminate -reset -screen $SCREENSIZE -dpi $DPI -nolisten tcp -displayfd 5 5>&1 2>/dev/null) | while read D; do + export DISPLAY=:$D + cat > ~/seremote << __EOF + #!/bin/sh diff --git a/SOURCES/semodule-utils-fedora.patch b/SOURCES/semodule-utils-fedora.patch new file mode 100644 index 0000000..cde0b2d --- /dev/null +++ b/SOURCES/semodule-utils-fedora.patch @@ -0,0 +1,12 @@ +diff --git semodule-utils-2.8/semodule_package/semodule_package.c semodule-utils-2.8/semodule_package/semodule_package.c +index 3515234..7b75b3f 100644 +--- semodule-utils-2.8/semodule_package/semodule_package.c ++++ semodule-utils-2.8/semodule_package/semodule_package.c +@@ -74,6 +74,7 @@ static int file_to_data(const char *path, char **data, size_t * len) + } + if (!sb.st_size) { + *len = 0; ++ close(fd); + return 0; + } + diff --git a/SPECS/policycoreutils.spec b/SPECS/policycoreutils.spec new file mode 100644 index 0000000..75b6dc1 --- /dev/null +++ b/SPECS/policycoreutils.spec @@ -0,0 +1,5378 @@ +%global libauditver 2.1.3-4 +%global libsepolver 2.8-2 +%global libsemanagever 2.8-4 +%global libselinuxver 2.8-6 +%global sepolgenver 2.8 + +%global generatorsdir %{_prefix}/lib/systemd/system-generators + +Summary: SELinux policy core utilities +Name: policycoreutils +Version: 2.8 +Release: 16.1%{?dist} +License: GPLv2 +# https://github.com/SELinuxProject/selinux/wiki/Releases +Source0: https://raw.githubusercontent.com/wiki/SELinuxProject/selinux/files/releases/20180524/policycoreutils-2.8.tar.gz +Source1: https://raw.githubusercontent.com/wiki/SELinuxProject/selinux/files/releases/20180524/selinux-python-2.8.tar.gz +Source2: https://raw.githubusercontent.com/wiki/SELinuxProject/selinux/files/releases/20180524/selinux-gui-2.8.tar.gz +Source3: https://raw.githubusercontent.com/wiki/SELinuxProject/selinux/files/releases/20180524/selinux-sandbox-2.8.tar.gz +Source4: https://raw.githubusercontent.com/wiki/SELinuxProject/selinux/files/releases/20180524/selinux-dbus-2.8.tar.gz +Source5: https://raw.githubusercontent.com/wiki/SELinuxProject/selinux/files/releases/20180524/semodule-utils-2.8.tar.gz +Source6: https://raw.githubusercontent.com/wiki/SELinuxProject/selinux/files/releases/20180524/restorecond-2.8.tar.gz +URL: https://github.com/SELinuxProject +Source12: policycoreutils_man_ru2.tar.bz2 +Source13: system-config-selinux.png +Source14: sepolicy-icons.tgz +Source15: selinux-autorelabel +Source16: selinux-autorelabel.service +Source17: selinux-autorelabel-mark.service +Source18: selinux-autorelabel.target +Source19: selinux-autorelabel-generator.sh +Source20: policycoreutils-po.tgz +Source21: python-po.tgz +Source22: gui-po.tgz +Source23: sandbox-po.tgz +# download https://raw.githubusercontent.com/fedora-selinux/scripts/master/selinux/make-fedora-selinux-patch.sh +# run: +# HEAD 15b521e6d24b1cb3a004d49f630f1d33f3e11466 +# $ for i in policycoreutils selinux-python selinux-gui selinux-sandbox selinux-dbus semodule-utils restorecond; do +# VERSION=2.8 ./make-fedora-selinux-patch.sh $i +# done +Patch: policycoreutils-fedora.patch +Patch1: selinux-python-fedora.patch +Patch2: selinux-gui-fedora.patch +Patch3: selinux-sandbox-fedora.patch +Patch4: selinux-dbus-fedora.patch +Patch5: semodule-utils-fedora.patch +Patch6: restorecond-fedora.patch +Obsoletes: policycoreutils < 2.0.61-2 +Conflicts: filesystem < 3, selinux-policy-base < 3.13.1-138 +# initscripts < 9.66 shipped fedora-autorelabel services which are renamed to selinux-relabel +Conflicts: initscripts < 9.66 +Provides: /sbin/fixfiles +Provides: /sbin/restorecon + +BuildRequires: gcc +BuildRequires: pam-devel libsepol-static >= %{libsepolver} libsemanage-static >= %{libsemanagever} libselinux-devel >= %{libselinuxver} libcap-devel audit-libs-devel >= %{libauditver} gettext +BuildRequires: desktop-file-utils dbus-devel dbus-glib-devel +BuildRequires: python3-devel +BuildRequires: systemd +Requires: util-linux grep gawk diffutils rpm sed +Requires: libsepol >= %{libsepolver} coreutils libselinux-utils >= %{libselinuxver} + +%description +Security-enhanced Linux is a feature of the Linux® kernel and a number +of utilities with enhanced security functionality designed to add +mandatory access controls to Linux. The Security-enhanced Linux +kernel contains new architectural components originally developed to +improve the security of the Flask operating system. These +architectural components provide general support for the enforcement +of many kinds of mandatory access control policies, including those +based on the concepts of Type Enforcement®, Role-based Access +Control, and Multi-level Security. + +policycoreutils contains the policy core utilities that are required +for basic operation of a SELinux system. These utilities include +load_policy to load policies, setfiles to label filesystems, newrole +to switch roles. + +%prep +# create selinux/ directory and extract sources +%setup -q -c -n selinux +%setup -q -T -D -a 1 -n selinux +%setup -q -T -D -a 2 -n selinux +%setup -q -T -D -a 3 -n selinux +%setup -q -T -D -a 4 -n selinux +%setup -q -T -D -a 5 -n selinux +%setup -q -T -D -a 6 -n selinux +%patch -p0 -b .policycoreutils-fedora + +cp %{SOURCE13} selinux-gui-%{version}/ +tar -xvf %{SOURCE14} -C selinux-python-%{version}/sepolicy/ +%patch1 -p0 -b .selinux-python +%patch2 -p0 -b .selinux-gui +%patch3 -p0 -b .selinux-sandbox +%patch4 -p0 -b .selinux-dbus +%patch5 -p0 -b .semodule-utils +%patch6 -p0 -b .restorecond + +# Since patches containing translation changes were too big, translations were moved to separate tarballs +# For more information see README.translations +tar -x -f %{SOURCE20} -C policycoreutils-%{version} -z +tar -x -f %{SOURCE21} -C selinux-python-%{version} -z +tar -x -f %{SOURCE22} -C selinux-gui-%{version} -z +tar -x -f %{SOURCE23} -C selinux-sandbox-%{version} -z + +%build +%set_build_flags +export PYTHON=%{__python3} + +make -C policycoreutils-%{version} LSPP_PRIV=y SBINDIR="%{_sbindir}" LIBDIR="%{_libdir}" SEMODULE_PATH="/usr/sbin" LIBSEPOLA="%{_libdir}/libsepol.a" all +make -C selinux-python-%{version} PYTHON=%{__python3} SBINDIR="%{_sbindir}" LSPP_PRIV=y LIBDIR="%{_libdir}" LIBSEPOLA="%{_libdir}/libsepol.a" all +make -C selinux-gui-%{version} SBINDIR="%{_sbindir}" LSPP_PRIV=y LIBDIR="%{_libdir}" LIBSEPOLA="%{_libdir}/libsepol.a" all +make -C selinux-sandbox-%{version} SBINDIR="%{_sbindir}" LSPP_PRIV=y LIBDIR="%{_libdir}" LIBSEPOLA="%{_libdir}/libsepol.a" all +make -C selinux-dbus-%{version} SBINDIR="%{_sbindir}" LSPP_PRIV=y LIBDIR="%{_libdir}" LIBSEPOLA="%{_libdir}/libsepol.a" all +make -C semodule-utils-%{version} SBINDIR="%{_sbindir}" LSPP_PRIV=y LIBDIR="%{_libdir}" LIBSEPOLA="%{_libdir}/libsepol.a" all +make -C restorecond-%{version} SBINDIR="%{_sbindir}" LSPP_PRIV=y LIBDIR="%{_libdir}" LIBSEPOLA="%{_libdir}/libsepol.a" all + +%install +mkdir -p %{buildroot}%{_bindir} +mkdir -p %{buildroot}%{_sbindir} +mkdir -p %{buildroot}%{_mandir}/man1 +mkdir -p %{buildroot}%{_mandir}/man5 +mkdir -p %{buildroot}%{_mandir}/man8 +%{__mkdir} -p %{buildroot}/%{_usr}/share/doc/%{name}/ + +make -C policycoreutils-%{version} LSPP_PRIV=y DESTDIR="%{buildroot}" SBINDIR="%{_sbindir}" LIBDIR="%{_libdir}" SEMODULE_PATH="/usr/sbin" LIBSEPOLA="%{_libdir}/libsepol.a" install + +make -C selinux-python-%{version} PYTHON=%{__python3} DESTDIR="%{buildroot}" SBINDIR="%{_sbindir}" LIBDIR="%{_libdir}" LIBSEPOLA="%{_libdir}/libsepol.a" install + +make -C selinux-gui-%{version} PYTHON=%{__python3} DESTDIR="%{buildroot}" SBINDIR="%{_sbindir}" LIBDIR="%{_libdir}" LIBSEPOLA="%{_libdir}/libsepol.a" install + +make -C selinux-sandbox-%{version} PYTHON=%{__python3} DESTDIR="%{buildroot}" SBINDIR="%{_sbindir}" LIBDIR="%{_libdir}" LIBSEPOLA="%{_libdir}/libsepol.a" install + +make -C selinux-dbus-%{version} PYTHON=%{__python3} DESTDIR="%{buildroot}" SBINDIR="%{_sbindir}" LIBDIR="%{_libdir}" LIBSEPOLA="%{_libdir}/libsepol.a" install + +make -C semodule-utils-%{version} PYTHON=%{__python3} DESTDIR="%{buildroot}" SBINDIR="%{_sbindir}" LIBDIR="%{_libdir}" LIBSEPOLA="%{_libdir}/libsepol.a" install + +make -C restorecond-%{version} PYTHON=%{__python3} DESTDIR="%{buildroot}" SBINDIR="%{_sbindir}" LIBDIR="%{_libdir}" LIBSEPOLA="%{_libdir}/libsepol.a" install + +# Fix perms on newrole so that objcopy can process it +chmod 0755 %{buildroot}%{_bindir}/newrole + +# Systemd +rm -rf %{buildroot}/%{_sysconfdir}/rc.d/init.d/restorecond + +tar -jxf %{SOURCE12} -C %{buildroot}/ +rm -f %{buildroot}/usr/share/man/ru/man8/genhomedircon.8.gz +rm -f %{buildroot}/usr/share/man/ru/man8/open_init_pty.8.gz +rm -f %{buildroot}/usr/share/man/ru/man8/semodule_deps.8.gz +rm -f %{buildroot}/usr/share/man/man8/open_init_pty.8 +rm -f %{buildroot}/usr/sbin/open_init_pty +rm -f %{buildroot}/usr/sbin/run_init +rm -f %{buildroot}/usr/share/man/ru/man8/run_init.8* +rm -f %{buildroot}/usr/share/man/man8/run_init.8* +rm -f %{buildroot}/etc/pam.d/run_init* + +ln -sf /usr/share/system-config-selinux/polgengui.py %{buildroot}%{_bindir}/selinux-polgengui + +desktop-file-install --dir %{buildroot}%{_datadir}/applications --add-category Settings \ + %{buildroot}%{_datadir}/system-config-selinux/system-config-selinux.desktop + +desktop-file-install --dir %{buildroot}%{_datadir}/applications --add-category Settings \ + %{buildroot}%{_datadir}/system-config-selinux/sepolicy.desktop + +desktop-file-install --dir %{buildroot}%{_datadir}/applications \ + %{buildroot}%{_datadir}/system-config-selinux/selinux-polgengui.desktop + +rm -f %{buildroot}%{_datadir}/system-config-selinux/selinux-polgengui.desktop +rm -f %{buildroot}%{_datadir}/system-config-selinux/sepolicy.desktop +rm -f %{buildroot}%{_datadir}/system-config-selinux/system-config-selinux.desktop + +mkdir -m 755 -p %{buildroot}/%{generatorsdir} +install -m 644 -p %{SOURCE16} %{buildroot}/%{_unitdir}/ +install -m 644 -p %{SOURCE17} %{buildroot}/%{_unitdir}/ +install -m 644 -p %{SOURCE18} %{buildroot}/%{_unitdir}/ +install -m 755 -p %{SOURCE19} %{buildroot}/%{generatorsdir}/ +install -m 755 -p %{SOURCE15} %{buildroot}/%{_libexecdir}/selinux/ + +# change /usr/bin/python to %%{__python3} in policycoreutils-python3 +pathfix.py -i "%{__python3} -Es" -p %{buildroot}%{python3_sitelib} + +# change /usr/bin/python to %%{__python3} in policycoreutils-python-utils +pathfix.py -i "%{__python3} -Es" -p \ + %{buildroot}%{_sbindir}/semanage \ + %{buildroot}%{_bindir}/chcat \ + %{buildroot}%{_bindir}/sandbox \ + %{buildroot}%{_datadir}/sandbox/start \ + %{buildroot}%{_bindir}/audit2allow \ + %{buildroot}%{_bindir}/sepolicy \ + %{buildroot}%{_bindir}/sepolgen-ifgen \ + %{buildroot}%{_datadir}/system-config-selinux/system-config-selinux.py \ + %{buildroot}%{_datadir}/system-config-selinux/selinux_server.py \ + %{buildroot}%{_datadir}/system-config-selinux/polgengui.py \ + %nil + +# clean up ~ files from pathfix - https://bugzilla.redhat.com/show_bug.cgi?id=1546990 +find %{buildroot}%{python3_sitelib} %{buildroot}%{python3_sitearch} \ + %{buildroot}%{_sbindir} %{buildroot}%{_bindir} %{buildroot}%{_datadir} \ + -type f -name '*~' | xargs rm -f + +%find_lang policycoreutils +%find_lang selinux-python +%find_lang selinux-gui +%find_lang selinux-sandbox + +%package python-utils +Summary: SELinux policy core python utilities +Requires: python3-policycoreutils = %{version}-%{release} +Obsoletes: policycoreutils-python <= 2.4-4 +BuildArch: noarch + +%description python-utils +The policycoreutils-python-utils package contains the management tools use to manage +an SELinux environment. + +%files python-utils +%{_sbindir}/semanage +%{_bindir}/chcat +%{_bindir}/sandbox +%{_bindir}/audit2allow +%{_bindir}/audit2why +%{_mandir}/man1/audit2allow.1* +%{_mandir}/ru/man1/audit2allow.1* +%{_mandir}/man1/audit2why.1* +%{_sysconfdir}/dbus-1/system.d/org.selinux.conf +%{_mandir}/man8/chcat.8* +%{_mandir}/ru/man8/chcat.8* +%{_mandir}/man8/sandbox.8* +%{_mandir}/man8/semanage*.8* +%{_mandir}/ru/man8/semanage.8* +%{_datadir}/bash-completion/completions/semanage + +%package dbus +Summary: SELinux policy core DBUS api +Requires: python3-policycoreutils = %{version}-%{release} +Requires: python3-slip-dbus +BuildArch: noarch + +%description dbus +The policycoreutils-dbus package contains the management DBUS API use to manage +an SELinux environment. + +%files dbus +%{_sysconfdir}/dbus-1/system.d/org.selinux.conf +%{_datadir}/dbus-1/system-services/org.selinux.service +%{_datadir}/polkit-1/actions/org.selinux.policy +%{_datadir}/polkit-1/actions/org.selinux.config.policy +%{_datadir}/system-config-selinux/selinux_server.py* + +%package -n python3-policycoreutils +%{?python_provide:%python_provide python3-policycoreutils} +# Remove before F31 +Provides: %{name}-python3 = %{version}-%{release} +Provides: %{name}-python3 = %{version}-%{release} +Obsoletes: %{name}-python3 < %{version}-%{release} +Summary: SELinux policy core python3 interfaces +Requires:policycoreutils = %{version}-%{release} +Requires:python3-libsemanage >= %{libsemanagever} python3-libselinux +# no python3-audit-libs yet +Requires:audit-libs-python3 >= %{libauditver} +Requires: checkpolicy +Requires: python3-setools >= 4.1.1 +BuildArch: noarch + +%description -n python3-policycoreutils +The python3-policycoreutils package contains the interfaces that can be used +by python 3 in an SELinux environment. + +%files -f selinux-python.lang -n python3-policycoreutils +%{python3_sitelib}/seobject.py* +%{python3_sitelib}/__pycache__ +%{python3_sitelib}/sepolgen +%dir %{python3_sitelib}/sepolicy +%{python3_sitelib}/sepolicy/templates +%dir %{python3_sitelib}/sepolicy/help +%{python3_sitelib}/sepolicy/help/* +%{python3_sitelib}/sepolicy/__init__.py* +%{python3_sitelib}/sepolicy/booleans.py* +%{python3_sitelib}/sepolicy/communicate.py* +%{python3_sitelib}/sepolicy/generate.py* +%{python3_sitelib}/sepolicy/interface.py* +%{python3_sitelib}/sepolicy/manpage.py* +%{python3_sitelib}/sepolicy/network.py* +%{python3_sitelib}/sepolicy/transition.py* +%{python3_sitelib}/sepolicy/sedbus.py* +%{python3_sitelib}/sepolicy*.egg-info +%{python3_sitelib}/sepolicy/__pycache__ + +%package devel +Summary: SELinux policy core policy devel utilities +Requires: policycoreutils-python-utils = %{version}-%{release} +Requires: /usr/bin/make dnf +Requires: selinux-policy-devel + +%description devel +The policycoreutils-devel package contains the management tools use to develop policy in an SELinux environment. + +%files devel +%{_bindir}/sepolgen +%{_bindir}/sepolgen-ifgen +%{_bindir}/sepolgen-ifgen-attr-helper +%dir /var/lib/sepolgen +/var/lib/sepolgen/perm_map +%{_bindir}/sepolicy +%{_mandir}/man8/sepolgen.8* +%{_mandir}/man8/sepolicy-booleans.8* +%{_mandir}/man8/sepolicy-generate.8* +%{_mandir}/man8/sepolicy-interface.8* +%{_mandir}/man8/sepolicy-network.8* +%{_mandir}/man8/sepolicy.8* +%{_mandir}/man8/sepolicy-communicate.8* +%{_mandir}/man8/sepolicy-manpage.8* +%{_mandir}/man8/sepolicy-transition.8* +%{_usr}/share/bash-completion/completions/sepolicy + + +%package sandbox +Summary: SELinux sandbox utilities +Requires: python3-policycoreutils = %{version}-%{release} +Requires: xorg-x11-server-Xephyr >= 1.14.1-2 /usr/bin/rsync /usr/bin/xmodmap +Requires: matchbox-window-manager +BuildRequires: libcap-ng-devel + +%description sandbox +The policycoreutils-sandbox package contains the scripts to create graphical +sandboxes + +%files -f selinux-sandbox.lang sandbox +%config(noreplace) %{_sysconfdir}/sysconfig/sandbox +%{_datadir}/sandbox/sandboxX.sh +%{_datadir}/sandbox/start +%caps(cap_setpcap,cap_setuid,cap_fowner,cap_dac_override,cap_sys_admin,cap_sys_nice=pe) %{_sbindir}/seunshare +%{_mandir}/man8/seunshare.8* +%{_mandir}/man5/sandbox.5* + +%package newrole +Summary: The newrole application for RBAC/MLS +Requires: policycoreutils = %{version}-%{release} + +%description newrole +RBAC/MLS policy machines require newrole as a way of changing the role +or level of a logged in user. + +%files newrole +%attr(0755,root,root) %caps(cap_dac_read_search,cap_setpcap,cap_audit_write,cap_sys_admin,cap_fowner,cap_chown,cap_dac_override=pe) %{_bindir}/newrole +%{_mandir}/man1/newrole.1.gz +%config(noreplace) %{_sysconfdir}/pam.d/newrole + +%package gui +Summary: SELinux configuration GUI +Requires: policycoreutils-devel = %{version}-%{release}, python3-policycoreutils = %{version}-%{release} +Requires: policycoreutils-dbus = %{version}-%{release} +Requires: gtk3, python3-gobject +BuildRequires: desktop-file-utils +BuildArch: noarch + +%description gui +system-config-selinux is a utility for managing the SELinux environment + +%files -f selinux-gui.lang gui +%{_bindir}/system-config-selinux +%{_bindir}/selinux-polgengui +%{_datadir}/applications/sepolicy.desktop +%{_datadir}/applications/system-config-selinux.desktop +%{_datadir}/applications/selinux-polgengui.desktop +%{_datadir}/icons/hicolor/24x24/apps/system-config-selinux.png +%{_datadir}/pixmaps/system-config-selinux.png +%dir %{_datadir}/system-config-selinux +%{_datadir}/system-config-selinux/system-config-selinux.png +%{_datadir}/system-config-selinux/*Page.py* +%{_datadir}/system-config-selinux/html_util.py* +%{_datadir}/system-config-selinux/polgengui.py* +%{_datadir}/system-config-selinux/system-config-selinux.py* +%{_datadir}/system-config-selinux/*.ui +%{python3_sitelib}/sepolicy/gui.py* +%{python3_sitelib}/sepolicy/sepolicy.glade +%{_datadir}/icons/hicolor/*/apps/sepolicy.png +%{_datadir}/pixmaps/sepolicy.png +%{_mandir}/man8/system-config-selinux.8* +%{_mandir}/man8/selinux-polgengui.8* +%{_mandir}/man8/sepolicy-gui.8* + +%files -f %{name}.lang +%{_sbindir}/restorecon +%{_sbindir}/restorecon_xattr +%{_sbindir}/fixfiles +%{_sbindir}/setfiles +%{_sbindir}/load_policy +%{_sbindir}/genhomedircon +%{_sbindir}/setsebool +%{_sbindir}/semodule +%{_sbindir}/sestatus +%{_bindir}/secon +%{_bindir}/semodule_expand +%{_bindir}/semodule_link +%{_bindir}/semodule_package +%{_bindir}/semodule_unpackage +%{_libexecdir}/selinux/hll +%{_libexecdir}/selinux/selinux-autorelabel +%{_unitdir}/selinux-autorelabel-mark.service +%{_unitdir}/selinux-autorelabel.service +%{_unitdir}/selinux-autorelabel.target +%{generatorsdir}/selinux-autorelabel-generator.sh +%config(noreplace) %{_sysconfdir}/sestatus.conf +# selinux-policy Requires: policycoreutils, so we own this set of directories and our files within them +%{_mandir}/man5/selinux_config.5.gz +%{_mandir}/man5/sestatus.conf.5.gz +%{_mandir}/man8/fixfiles.8* +%{_mandir}/ru/man8/fixfiles.8* +%{_mandir}/man8/load_policy.8* +%{_mandir}/ru/man8/load_policy.8* +%{_mandir}/man8/restorecon.8* +%{_mandir}/ru/man8/restorecon.8* +%{_mandir}/man8/restorecon_xattr.8* +%{_mandir}/man8/semodule.8* +%{_mandir}/ru/man8/semodule.8* +%{_mandir}/man8/sestatus.8* +%{_mandir}/ru/man8/sestatus.8* +%{_mandir}/man8/setfiles.8* +%{_mandir}/ru/man8/setfiles.8* +%{_mandir}/man8/setsebool.8* +%{_mandir}/ru/man8/setsebool.8* +%{_mandir}/man1/secon.1* +%{_mandir}/ru/man1/secon.1* +%{_mandir}/man8/genhomedircon.8* +%{_mandir}/man8/semodule_expand.8* +%{_mandir}/ru/man8/semodule_expand.8* +%{_mandir}/man8/semodule_link.8* +%{_mandir}/ru/man8/semodule_link.8* +%{_mandir}/man8/semodule_unpackage.8* +%{_mandir}/man8/semodule_package.8* +%{_mandir}/ru/man8/semodule_package.8* +%dir %{_datadir}/bash-completion +%{_datadir}/bash-completion/completions/setsebool +%{!?_licensedir:%global license %%doc} +%license policycoreutils-%{version}/COPYING +%doc %{_usr}/share/doc/%{name} + +%package restorecond +Summary: SELinux restorecond utilities +BuildRequires: systemd-units + +%description restorecond +The policycoreutils-restorecond package contains the restorecond service. + +%files restorecond +%{_sbindir}/restorecond +%{_unitdir}/restorecond.service +%config(noreplace) %{_sysconfdir}/selinux/restorecond.conf +%config(noreplace) %{_sysconfdir}/selinux/restorecond_user.conf +%{_sysconfdir}/xdg/autostart/restorecond.desktop +%{_datadir}/dbus-1/services/org.selinux.Restorecond.service +%{_mandir}/man8/restorecond.8* +%{_mandir}/ru/man8/restorecond.8* +%{!?_licensedir:%global license %%doc} +%license policycoreutils-%{version}/COPYING + +%post +%systemd_post selinux-autorelabel-mark.service + +%preun +%systemd_preun selinux-autorelabel-mark.service + +%post restorecond +%systemd_post restorecond.service + +%preun restorecond +%systemd_preun restorecond.service + +%postun restorecond +%systemd_postun_with_restart restorecond.service + +%changelog +* Fri Dec 14 2018 Petr Lautrbach - 2.8-16.1 +- semanage: move valid_types initialisations to class constructors +- semanage: import sepolicy only when it's needed +- sepolicy: Add sepolicy.load_store_policy(store) +- semanage: Start exporting "ibendport" and "ibpkey" entries + +* Wed Dec 5 2018 Petr Lautrbach - 2.8-15 +- chcat: use check_call instead of getstatusoutput +- semanage: Use standard argparse.error() method +- semanage: Fix handling of -a/-e/-d/-r options + +* Tue Dec 4 2018 Petr Lautrbach - 2.8-14 +- Update translations + +* Mon Dec 3 2018 Petr Lautrbach - 2.8-13 +- Use ipaddress module instead of IPy + +* Tue Nov 13 2018 Petr Lautrbach - 2.8-12 +- Handle more reserved port types +- Replace aliases with corresponding type names + +* Thu Nov 8 2018 Petr Lautrbach - 2.8-11.1 +- Fix RESOURCE_LEAK coverity scan defects + +* Thu Oct 25 2018 Petr Lautrbach - 2.8-10 +- sepolicy: Update to work with setools-4.2.0 +- gui: Make all polgen button labels translatable + +* Tue Oct 16 2018 Petr Lautrbach - 2.8-9 +- sepolicy: Fix get_real_type_name to handle query failure properly + +* Mon Oct 15 2018 Petr Lautrbach - 2.8-8 +- sepolicy: search() for dontaudit rules as well + +* Fri Sep 14 2018 Petr Lautrbach - 2.8-7 +- setfiles: Improve description of -d switch +- Fix typo in newrole.1 manpage +- semanage: Stop rejecting aliases in semanage commands +- sepolicy: Stop rejecting aliases in sepolicy commands +- sepolicy: Fix "info" to search aliases as well +- sepolgen: fix refpolicy parsing of "permissive" +- sepolgen: return NotImplemented instead of raising it +- semanage: fix Python syntax of catching several exceptions +- semanage: Replace bare except with specific one +- semanage: Fix logger class definition +- semanage: Stop logging loginRecords changes +- add xperms support to audit2allow +- sepolgen: fix access vector initialization +- sepolgen: print all AV rules correctly + +* Thu Sep 13 2018 Petr Lautrbach - 2.8-6.1 +- Update translations + +* Tue Jul 24 2018 Petr Lautrbach - 2.8-5 +- sandbox: Use matchbox-window-manager instead of openbox (#1568295) + +* Thu Jul 19 2018 Petr Lautrbach - 2.8-4 +- selinux-autorelabel: Use plymouth --quit rather then --hide-splash (#1592221) +- selinux-autorelabel: Increment boot_indeterminate grub environment variable (#1592221) +- Do not require libcgroup - it's not used anymore + +* Tue Jun 26 2018 Petr Lautrbach - 2.8-3 +- Do not use symlinks to enable selinux-autorelabel-mark.service (#1589720) + +* Wed Jun 6 2018 Petr Lautrbach - 2.8-2 +- Don't build the Python 2 subpackages (#1567354) + +* Fri May 25 2018 Petr Lautrbach - 2.8-1.1 +- SELinux userspace 2.8 release + +* Tue May 22 2018 Petr Lautrbach - 2.7-19 +- selinux-autorelabel: set UEFI boot order (BootNext) same as BootCurrent +- selinux-autorelabel: synchronize cached writes before reboot (#1385272) + +* Tue Apr 3 2018 Petr Lautrbach - 2.7-18 +- Move semodule_* utilities to policycoreutils package (#1562549) + +* Thu Mar 22 2018 Petr Lautrbach - 2.7-17 +- semanage/seobject.py: Fix undefined store check (#1559174) + +* Fri Mar 16 2018 Petr Lautrbach - 2.7-16 +- Build python only subpackages as noarch +- Move semodule_package to policycoreutils-devel + +* Tue Mar 13 2018 Petr Lautrbach - 2.7-15 +- sepolicy: Fix translated strings with parameters +- sepolicy: Support non-MLS policy +- sepolicy: Initialize policy.ports as a dict in generate.py +- gui/polgengui.py: Use stop_emission_by_name instead of emit_stop_by_name +- Minor update for bash completion +- semodule_package: fix semodule_unpackage man page +- gui/semanagePage: Close "edit" and "add" dialogues when successfull +- gui/fcontextPage: Set default object class in addDialog\ +- sepolgen: fix typo in PolicyGenerator +- build: follow standard semantics for DESTDIR and PREFIX + +* Mon Feb 26 2018 Petr Lautrbach - 2.7-14 +- Use Fedora RPM build flags (#1548740) + +* Tue Feb 20 2018 Petr Lautrbach - 2.7-13 +- Fix mangling of python shebangs + +* Mon Feb 19 2018 Miro Hrončok - 2.7-12 +- Rename the python3 subpackage to have prefix, not suffix +- Use python3 prefixes in requires where possible + +* Thu Feb 15 2018 Petr Lautrbach - 2.7-11 +- Rewrite selinux-polgengui to use Gtk3 +- Drop python2 and gnome-python2 from gui Requires + +* Fri Feb 09 2018 Fedora Release Engineering - 2.7-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Wed Jan 31 2018 Petr Lautrbach - 2.7-9 +- Require audit-libs-python2 + +* Thu Jan 18 2018 Igor Gnatenko - 2.7-8 +- Remove obsolete scriptlets + +* Wed Dec 20 2017 Petr Lautrbach - 2.7-7 +- semanage: bring semanageRecords.set_reload back to seobject.py (#1527745) + +* Wed Dec 13 2017 Petr Lautrbach - 2.7-6 +- semanage: make seobject.py backward compatible +- Own %%{pythonX_sitelib}/site-packages/sepolicy directories (#1522942) + +* Wed Nov 22 2017 Petr Lautrbach - 2.7-5 +- sepolicy: Fix sepolicy manpage +- semanage: Update Infiniband code to work on python3 +- semanage: Fix export of ibendport entries +- semanage: Enforce noreload only if it's requested by -N option + +* Fri Oct 20 2017 Petr Lautrbach - 2.7-4 +- restorecond: check write() and daemon() results +- sepolicy: do not fail when file_contexts.local or .subs do not exist +- sepolicy: remove stray space in section "SEE ALSO" +- sepolicy: fix misspelling of _ra_content_t suffix +- gui: port to Python 3 by migrating to PyGI +- gui: remove the status bar +- gui: fix parsing of "semodule -lfull" in tab Modules +- gui: delete overridden definition of usersPage.delete() +- Enable listing file_contexts.homedirs (#1409813) +- remove semodule_deps + +* Sat Aug 19 2017 Zbigniew Jędrzejewski-Szmek - 2.7-3 +- Also add Provides for the old name without %%_isa + +* Sat Aug 19 2017 Zbigniew Jędrzejewski-Szmek - 2.7-2 +- Python 2 binary package renamed to python2-policycoreutils + See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3 + +* Mon Aug 07 2017 Petr Lautrbach - 2.7-1 +- Update to upstream release 2017-08-04 +- Move DBUS API from -gui to -dbus package + +* Thu Aug 03 2017 Fedora Release Engineering - 2.6-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Sun Jul 30 2017 Florian Weimer - 2.6-8 +- Rebuild with binutils fix for ppc64le (#1475636) + +* Fri Jul 28 2017 Petr Lautrbach - 2.6-7 +- Make 'sepolicy manpage' and 'sepolicy transition' faster +- open_init_pty: restore stdin/stdout to blocking upon exit +- fixfiles: do not dereference link files in tmp +- fixfiles: use a consistent order for options to restorecon +- fixfiles: don't ignore `-F` when run in `-C` mode +- fixfiles: remove bad modes of "relabel" command +- fixfiles: refactor into the `set -u` dialect +- fixfiles: if restorecon aborts, we should too +- fixfiles: usage errors are fatal +- fixfiles: syntax error +- fixfiles: remove two unused variables +- fixfiles: tidy up usage(), manpage synopsis +- fixfiles: deprecate -l option +- fixfiles: move logit call outside of redirected function +- fixfiles: fix logging about R/O filesystems +- fixfiles: clarify exclude_dirs() +- fixfiles: remove (broken) redundant code + + +* Thu Jul 27 2017 Fedora Release Engineering - 2.6-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Thu Apr 06 2017 Petr Lautrbach - 2.6-5 +- semanage: Unify argument handling (#1398987) +- setfiles: set up a logging callback for libselinux +- setfiles: Fix setfiles progress indicator +- setfiles: stdout messages don't need program prefix +- setfiles: don't scramble stdout and stderr together (#1435894) +- restorecond: Decrease loglevel of termination message (#1264505) +- fixfiles should handle path arguments more robustly +- fixfiles: handle unexpected spaces in command +- fixfiles: remove useless use of cat (#1435894) +- semanage: Add checks if a module name is passed in (#1420707) +- semanage: fix export of fcontext socket entries (#1435127) +- selinux-autorelabel: remove incorrect redirection to /dev/null (#1415674) + +* Fri Mar 17 2017 Petr Lautrbach - 2.6-4 +- Fix selinux-polgengui (#1432337) +- sepolicy - fix obtaining domain name in HTMLManPages + +* Tue Feb 28 2017 Petr Lautrbach - 2.6-3 +- Fix several issues in gui and 'sepolicy manpage' (#1416372) + +* Thu Feb 23 2017 Petr Lautrbach - 2.6-2 +- Use %%{__python3} instead of python3 + +* Mon Feb 20 2017 Petr Lautrbach - 2.6-1.1 +- Fix pp crash when processing base module (#1417200) +- Update to upstream release 2016-10-14 + +* Wed Feb 15 2017 Igor Gnatenko - 2.5-22 +- Rebuild for brp-python-bytecompile + +* Sat Feb 11 2017 Fedora Release Engineering - 2.5-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Wed Dec 21 2016 Kevin Fenzi - 2.5-20 +- Rebuild for python 3.6 + +* Thu Dec 01 2016 Petr Lautrbach - 2.5-19 +- seobject: Handle python error returns correctly +- policycoreutils/sepolicy/gui: fix current selinux state radiobutton +- policycoreutils: semodule_package: do not fail with an empty fc file + +* Tue Nov 22 2016 Petr Lautrbach - 2.5-18 +- Update translations +- Fix fcontextPage editing features (#1344842) + +* Mon Oct 03 2016 Petr Lautrbach 2.5-17 +- sandbox: Use dbus-run-session instead of dbus-launch when available +- hll/pp: Change warning for module name not matching filename to match new behavior +- Remove LDFLAGS from CFLAGS +- sandbox: create a new session for sandboxed processes +- sandbox: do not try to setup directories without -X or -M +- sandbox: do not run xmodmap in a new X session +- sandbox: Use GObject introspection binding instead of pygtk2 +- sandbox: fix file labels on copied files +- sandbox: tests - close stdout of p +- sandbox: tests - use sandbox from cwd +- audit2allow: tests should use local copy not system +- audit2allow: fix audit2why import from seobject +- audit2allow: remove audit2why so that it gets symlinked +- semanage: fix man page and help message for import option +- semanage: fix error message for fcontext -m +- semanage: Fix semanage fcontext -D +- semanage: Correct fcontext auditing +- semanage: Default serange to "s0" for port modify +- semanage: Use socket.getprotobyname for protocol +- semanage: fix modify action in node and interface +- fixfiles: Pass -n to restorecon for fixfiles check +- sepolicy: Check get_rpm_nvr_list() return value +- Don't use subprocess.getstatusoutput() in Python 2 code +- semanage: Add auditing of changes in records +- Remove unused 'q' from semodule getopt string + +* Mon Aug 01 2016 Petr Lautrbach 2.5-16 +- Remove unused autoconf files from po/ +- Remove duplicate, empty translation files +- Rebuilt with libsepol-2.5-9, libselinux-2.5-11, libsemanage-2.5-7 + +* Thu Jul 21 2016 Petr Lautrbach 2.5-15 +- Fix sandbox -X issue related to python3 (#1358138) + +* Wed Jul 20 2016 Richard W.M. Jones - 2.5-14 +- Use generator approach to fix autorelabel + +* Tue Jul 19 2016 Fedora Release Engineering - 2.5-13 +- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages + +* Thu Jul 14 2016 Petr Lautrbach - 2.5-12 +- open_init_pty: Do not error on EINTR +- Fix [-s STORE] typos in semanage +- Update sandbox types in sandbox manual +- Update translations + +* Mon Jun 27 2016 Petr Lautrbach - 2.5-11 +- Convert sandbox to gtk-3 using pygi-convert.sh (#1343166) + +* Thu Jun 23 2016 Petr Lautrbach - 2.5-10 +- Fix typos in semanage manpages +- Fix the documentation of -l,--list for semodule +- Minor fix in a French translation +- Fix the extract example in semodule.8 +- Update sandbox.8 man page +- Remove typos from chcat --help +- sepolgen: Remove additional files when cleaning + +* Wed May 11 2016 Petr Lautrbach - 2.5-9 +- Fix multiple spelling errors +- Rebuild with libsepol-2.5-6 + +* Mon May 02 2016 Petr Lautrbach - 2.5-8 +- Rebuilt with libsepol-2.5-5 + +* Fri Apr 29 2016 Petr Lautrbach - 2.5-7 +- hll/pp: Warn if module name different than output filename + +* Mon Apr 25 2016 Petr Lautrbach - 2.5-6 +- Ship selinux-autorelabel utility and systemd unit files (#1328825) + +* Fri Apr 08 2016 Petr Lautrbach - 2.5-5 +- sepolgen: Add support for TYPEBOUNDS statement in INTERFACE policy files (#1319338) + +* Fri Mar 18 2016 Petr Lautrbach - 2.5-4 +- Add documentation for MCS separated domains +- Move svirt man page out of libvirt into its own + +* Thu Mar 17 2016 Petr Lautrbach - 2.5-3 +- policycoreutils: use python3 in chcat(#1318408) + +* Sat Mar 05 2016 Petr Lautrbach 2.5-2 +- policycoreutils/sepolicy: selinux_server.py to use GLib instead of gobject +- policycoreutils-gui requires python-slip-dbus (#1314685) + +* Tue Feb 23 2016 Petr Lautrbach 2.5-1 +- Update to upstream release 2016-02-23 + +* Thu Feb 04 2016 Fedora Release Engineering - 2.4-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Mon Dec 14 2015 Petr Lautrbach - 2.4-20 +- Fix 'semanage permissive -l' subcommand (#1286325) +- Several 'sepolicy gui' fixes (#1281309,#1281309,#1282382) + +* Tue Nov 17 2015 Petr Lautrbach 2.4-19 +- Require at least one argument for 'semanage permissive -d' (#1255676) + +* Mon Nov 16 2015 Petr Lautrbach 2.4-18 +- Improve sepolicy command line interface +- Fix sandbox to propagate specified MCS/MLS Security Level. (#1279006) +- Fix 'audit2allow -R' (#1280418) + +* Thu Nov 12 2015 Fedora Release Engineering - 2.4-17 +- Rebuilt for https://fedoraproject.org/wiki/Changes/python3.5 + +* Mon Nov 09 2015 Petr Lautrbach 2.4-16 +- policycoreutils-gui needs policycoreutils-python (#1279046) + +* Wed Nov 04 2015 Robert Kuska - 2.4-15 +- Rebuilt for Python3.5 rebuild + +* Thu Oct 08 2015 Petr Lautrbach 2.4-14 +- Revert the attempt to port -gui to GTK 3 (#1269328, #1266059) + +* Fri Oct 02 2015 Petr Lautrbach 2.4-13 +- newrole: Set keepcaps around setresuid calls +- newrole: Open stdin as read/write + +* Fri Sep 04 2015 Petr Lautrbach 2.4-12 +- Fix several semanage issue (#1247714) +- Decode output from subprocess, if error occurred (#1247039) + +* Wed Sep 02 2015 Petr Lautrbach 2.4-11 +- audit2allow, audit2why - ignore setlocale errors (#1208529) + +* Fri Aug 21 2015 Petr Lautrbach 2.4-10 +- Port sandbox to GTK 3 and fix issue with Xephyr + +* Thu Aug 13 2015 Petr Lautrbach 2.4-9 +- Fix another python3 issues mainly in sepolicy (#1247039,#1247575,#1251713) + +* Thu Aug 06 2015 Petr Lautrbach 2.4-8 +- Fix multiple python3 issues in sepolgen (#1249388,#1247575,#1247564) + +* Mon Jul 27 2015 Petr Lautrbach 2.4-7 +- policycoreutils-python3 depends on python-IPy-python3 + +* Mon Jul 27 2015 Petr Lautrbach 2.4-6 +- policycoreutils-devel depends on policycoreutils-python-utils (#1246818) + +* Fri Jul 24 2015 Petr Lautrbach 2.4-5 +- Move python utilities from -python to -python-utilities +- All scripts originally from policycoreutils-python use python 3 now + +* Fri Jul 24 2015 Petr Lautrbach 2.4-4 +- policycoreutils: semanage: fix moduleRecords deleteall method + +* Thu Jul 23 2015 Petr Lautrbach 2.4-3 +- Improve compatibility with python 3 +- Add sepolgen module to python3 package + +* Tue Jul 21 2015 Petr Lautrbach 2.4-2 +- Add Python3 support for sepolgen module (#1125208,#1125209) + +* Tue Jul 21 2015 Petr Lautrbach 2.4-1.1 +- Update to 2.4 release + +* Wed Jul 15 2015 Petr Lautrbach 2.4-0.7 +- Fix typo in semanage args for minimum policy store + +* Fri Jul 03 2015 Petr Lautrbach 2.4-0.6 +- policycoreutils: semanage: update to new source policy infrastructure +- semanage: move permissive module creation to /tmp + +* Thu Jun 18 2015 Fedora Release Engineering - 2.3-18 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Wed May 06 2015 Petr Lautrbach 2.3-17 +- setfiles/restorecon: fix -r/-R option (#1211721) + +* Mon Apr 13 2015 Petr Lautrbach 2.4-0.4 +- Update to upstream 2.4 + +* Tue Feb 24 2015 Petr Lautrbach 2.3-16 +- Temporary removed Requires:audit-libs-python from policycoreutils-python3 subpackage (#1195139) +- Simplication of sepolicy-manpage web functionality (#1193552) + +* Mon Feb 02 2015 Petr Lautrbach 2.3-15 +- We need to cover file_context.XXX.homedir to have fixfiles with exclude_dirs working correctly +- Use dnf instead of yum (#1156547) + +* Tue Nov 18 2014 Dan Walsh - 2.3-14 +- Audit2allow will check for mislabeled files, and tells user to fix the label. +- Also checks for basefiles and suggests creating a different label. +- Patch from Ryan Hallisey + +* Wed Nov 5 2014 Miroslav Grepl - 2.3-13 +- Switch back to yum. Need additional fixes to make it working correctly. + +* Wed Nov 5 2014 Miroslav Grepl - 2.3-12 +- Switch over to dnf from yum + +* Tue Sep 23 2014 Miroslav Grepl - 2.3-11 +- Improvements to audit2allow from rhallise@redhat.com + * Check for mislabeled files. + * Check for base file use and + * Suggest writable files as alternatives + +* Sun Aug 17 2014 Fedora Release Engineering - 2.3-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Mon Aug 4 2014 Dan Walsh - 2.3-9 +- Remove build requires for openbox, not needed + +* Thu Jul 31 2014 Tom Callaway - 2.3-8 +- fix license handling + +* Wed Jul 23 2014 Miroslav Grepl - 2.3-7 +- Examples are no longer in the main semanage man page (#1084390) +- Add support for Fedora22 man pages. We need to fix it to not using hardcoding. +- Print usage for all mutually exclusive options. +- Fix selinux man page to refer seinfo and sesearch tools. + +* Sat Jun 07 2014 Fedora Release Engineering - 2.3-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Wed May 28 2014 Kalev Lember - 2.3-5 +- Rebuilt for https://fedoraproject.org/wiki/Changes/Python_3.4 + +* Tue May 20 2014 Miroslav Grepl - 2.3-4 +- Fix setfiles to work correctly if -r option is defined + +* Fri May 16 2014 Dan Walsh - 2.3-3 +- Update Miroslav Grepl Patches + * If there is no executable we don't want to print a part of STANDARD FILE CON + * Add-manpages-for-typealiased-types + * Make fixfiles_exclude_dirs working if there is a substituion for the given d + +* Mon May 12 2014 Miroslav Grepl - 2.3-2 +- If there is no executable we don't want to print a part of STANDARD FILE CONTEXT + +* Tue May 6 2014 Dan Walsh - 2.3-1 +- Update to upstream + * Add -P semodule option to man page from Dan Walsh. + * selinux_current_policy_path will return none on a disabled SELinux system from Dan Walsh. + * Add new icons for sepolicy gui from Dan Walsh. + * Only return writeable files that are enabled from Dan Walsh. + * Add domain to short list of domains, when -t and -d from Dan Walsh. + * Fix up desktop files to match current standards from Dan Walsh. + * Add support to return sensitivities and categories for python from Dan Walsh. + * Cleanup whitespace from Dan Walsh. + * Add message to tell user to install sandbox policy from Dan Walsh. + * Add systemd unit file for mcstrans from Laurent Bigonville. + * Improve restorecond systemd unit file from Laurent Bigonville. + * Minor man pages improvements from Laurent Bigonville. + +* Tue May 6 2014 Miroslav Grepl - 2.2.5-15 +- Apply patch to use setcon in seunshare from luto@mit.edu + +* Wed Apr 30 2014 Dan Walsh - 2.2.5-14 +- Remove requirement for systemd-units + +* Fri Apr 25 2014 Miroslav Grepl - 2.2.5-13 +- Fix previous Fix-STANDARD_FILE_CONTEXT patch to exclude if non_exec does not exist + +* Thu Apr 24 2014 Miroslav Grepl - 2.2.5-12 +- Add policycoreutils-rhat-revert.patch to revert the last two commits to make build working +- Add 0001-Fix-STANDARD_FILE_CONTEXT-section-in-man-pages patch + +* Tue Apr 1 2014 Dan Walsh - 2.2.5-11 +- Update Translations + +* Thu Mar 27 2014 Miroslav Grepl - 2.2.5-10 +- Add support for Fedora21 html manpage structure +- Fix broken dependencies to require only usermode-gtk + +* Wed Mar 26 2014 Dan Walsh - 2.2.5-9 +- mgrepl [PATCH] Deleteall user customization fails if there is a user used +- for the default login. We do not want to fail on it and continue to delete +- customizations for users which are not used for default login. + +* Mon Mar 24 2014 Dan Walsh - 2.2.5-8 +- Update Translations +- Make selinux-policy build working also on another architectures related to s +- Miroslav grepl patch to fix the creation of man pages on different architectures. +- Add ability to list the actual active modules +- Fix spelling mistake on sesearch in generate man pages. + +* Fri Feb 14 2014 Dan Walsh - 2.2.5-7 +- Allow manpages to be built on aarch64 + +* Fri Feb 14 2014 Dan Walsh - 2.2.5-6 +- Don't be verbose in fixfiles if there is not tty + +* Thu Feb 13 2014 Dan Walsh - 2.2.5-5 +- Yum should only be required for policycoreutils-devel + +* Tue Jan 21 2014 Dan Walsh - 2.2.5-4 +- Update translations + +* Thu Jan 16 2014 Dan Walsh - 2.2.5-3 +- Add Miroslav patch to +- Fix previously_modified_initialize() to show modified changes properly for all selections + +* Wed Jan 8 2014 Dan Walsh - 2.2.5-2 +- Do not require /usr/share/selinux/devel/Makefile to build permissive domains + +* Mon Jan 6 2014 Dan Walsh - 2.2.5-1 +- Update to upstream + * Ignore selevel/serange if MLS is disabled from Sven Vermeulen. + +* Fri Jan 3 2014 Dan Walsh - 2.2.4-8 +- Update Tranlations +- Patch from Yuri Chornoivan to fix typos + +* Fri Jan 3 2014 Dan Walsh - 2.2.4-7 +- Fixes Customized booleans causing a crash of the sepolicy gui + +* Fri Dec 20 2013 Dan Walsh - 2.2.4-6 +- Fix sepolicy gui selection for advanced screen +- Update Translations +- Move requires checkpolicy requirement into policycoreutils-python + +* Mon Dec 16 2013 Dan Walsh - 2.2.4-5 +- Fix semanage man page description of import command +- Fix policy kit file to allow changing to permissive mode + +* Mon Dec 16 2013 Dan Walsh - 2.2.4-4 +- Fix broken dependencies. + +* Fri Dec 13 2013 Dan Walsh - 2.2.4-3 +- Break out python3 code into separate package + +* Fri Dec 6 2013 Dan Walsh - 2.2.4-2 +- Add mgrepl patch +- ptrace should be a part of deny_ptrace boolean in TEMPLATETYPE_admin + +* Tue Dec 3 2013 Dan Walsh - 2.2.4-1 +- Update to upstream + * Revert automatic setting of serange and seuser in seobject; was breaking non-MLS systems. +- Add patches for sepolicy gui from mgrepl to + Fix advanced_item_button_push() to allow to select an application in advanced search menu + Fix previously_modified_initialize() to show modified changes properly for all selections + + +* Fri Nov 22 2013 Dan Walsh - 2.2.3-1 +- Update to upstream + * Apply polkit check on all dbus interfaces and restrict to active user from Dan Walsh. + * Fix typo in sepolicy gui dbus.relabel_on_boot call from Dan Walsh. +- Apply Miroslav Grepl patch to fix TEMPLATETYPE_domtrans description in sepolicy generate + +* Wed Nov 20 2013 Dan Walsh - 2.2.2-2 +- Fix selinux-polgengui, get_all_modules call + +* Fri Nov 15 2013 Dan Walsh - 2.2.2-1 +- Speed up startup time of sepolicy gui +- Clean up ports screen to only show enabled ports. +- Update to upstream + * Remove import policycoreutils.default_encoding_utf8 from semanage from Dan Walsh. + * Make yum/extract_rpms optional for sepolicy generate from Dan Walsh. + * Add test suite for audit2allow and sepolgen-ifgen from Dan Walsh. + +* Thu Oct 31 2013 Dan Walsh - 2.2-2 +- Shift around some of the files to more appropriate packages. + * semodule_* packages are required for devel. +* Thu Oct 31 2013 Dan Walsh - 2.2-1 +- Update to upstream + * Properly build the swig exception file from Laurent Bigonville. + * Fix man pages from Laurent Bigonville. + * Support overriding PATH and INITDIR in Makefile from Laurent Bigonville. + * Fix LDFLAGS usage from Laurent Bigonville. + * Fix init_policy warning from Laurent Bigonville. + * Fix semanage logging from Laurent Bigonville. + * Open newrole stdin as read/write from Sven Vermeulen. + * Fix sepolicy transition from Sven Vermeulen. + * Support overriding CFLAGS from Simon Ruderich. + * Create correct man directory for run_init from Russell Coker. + * restorecon GLOB_BRACE change from Michal Trunecka. + * Extend audit2why to report additional constraint information. + * Catch IOError errors within audit2allow from Dan Walsh. + * semanage export/import fixes from Dan Walsh. + * Improve setfiles progress reporting from Dan Walsh. + * Document setfiles -o option in usage from Dan Walsh. + * Change setfiles to always return -1 on failure from Dan Walsh. + * Improve setsebool error r eporting from Dan Walsh. + * Major overhaul of gui from Dan Walsh. + * Fix sepolicy handling of non-MLS policy from Dan Walsh. + * Support returning type aliases from Dan Walsh. + * Add sepolicy tests from Dan Walsh. + * Add org.selinux.config.policy from Dan Walsh. + * Improve range and user input checking by semanage from Dan Walsh. + * Prevent source or target arguments that end with / for substitutions from Dan Walsh. + * Allow use of <> for semanage fcontext from Dan Walsh. + * Report customized user levels from Dan Walsh. + * Support deleteall for restoring disabled modules from Dan Walsh. + * Improve semanage error reporting from Dan Walsh. + * Only list disabled modules for module locallist from Dan Walsh. + * Fix logging from Dan Walsh. + * Define new constants for file type character codes from Dan Walsh. + * Improve bash completions from Dan Walsh. + * Convert semanage to argparse from Dan Walsh (originally by Dave Quigley). + * Add semanage tests from Dan Walsh. + * Split semanage man pages from Dan Walsh. + * Move bash completion scripts from Dan Walsh. + * Replace genhomedircon script with a link to semodule from Dan Walsh. + * Fix fixfiles from Dan Walsh. + * Add support for systemd service for restorecon from Dan Walsh. + * Spelling corrections from Dan Walsh. + * Improve sandbox support for home dir symlinks and file caps from Dan Walsh. + * Switch sandbox to openbox window manager from Dan Walsh. + * Coalesce audit2why and audit2allow from Dan Walsh. + * Change audit2allow to append to output file from Dan Walsh. + * Update translations from Dan Walsh. + * Change audit2why to use selinux_current_policy_path from Dan Walsh. + +* Fri Oct 25 2013 Dan Walsh - 2.1.14-89 +- Fix handling of man pages. + +* Wed Oct 16 2013 Dan Walsh - 2.1.14-88 +- Cleanup errors found by pychecker +- Apply patch from Michal Trunecka to allow restorecon to handle {} in globs + +* Fri Oct 11 2013 Dan Walsh - 2.1.14-87 +- sepolicy gui + - mgrepl fixes for users and login +- Update Translations. + +* Fri Oct 11 2013 Dan Walsh - 2.1.14-86 +- sepolicy gui + - mgrepl added delete screens for users and login + - Fix lots of bugs. +- Update Translations. + + +* Fri Oct 4 2013 Dan Walsh - 2.1.14-85 +- Fixes for fixfiles + * exclude_from_dirs should apply to all types of restorecon calls + * fixfiles check now works + * exit with the correct status + +- semanage no longer import selinux + +* Wed Oct 2 2013 Dan Walsh - 2.1.14-84 +- Fixes for sepolicy gui +- Fix setsebool to return 0 on success +- Update Po + +* Mon Sep 30 2013 Dan Walsh - 2.1.14-83 +- Fix sizes of help screens in sepolicy gui + +* Sat Sep 28 2013 Dan Walsh - 2.1.14-82 +- Improvements to sepolicy gui + - Add more help information + - Cleanup code + - Add deny_ptrace on lockdown screen + - Make unconfined/permissivedomains lockdown work + - Add more support for file equivalency + +* Wed Sep 18 2013 Dan Walsh - 2.1.14-81 +- Add back in the help png files +- Begin Adding support for file equivalency. + +* Wed Sep 4 2013 Dan Walsh - 2.1.14-80 +- Random fixes for sepolicy gui + * Do not prompt for password until you make a change + * Add user mappings and selinux users page + * lots of code cleanup + +- Verify homedir is owned by user before mounting over it with seunshare +- Fix fixfiles to handle Relabel properly +- Fix semanage fcontext -e / command to allow "/" + +* Wed Sep 4 2013 Dan Walsh - 2.1.14-79 +- Add Miroslav Grepl setsebool patch to give better error message on bad boolean names +- Additional help screens for sepolicy gui + +* Tue Sep 3 2013 Dan Walsh - 2.1.14-78 +- Random fixes for sepolicy gui +- Update Translations + +* Fri Aug 30 2013 Dan Walsh - 2.1.14-77 +- Add help screens for each page +- Fixes for system page + +* Mon Aug 26 2013 Dan Walsh - 2.1.14-76 +- Add Miroslav Grepl Patch to handle semanage -i and semanage -o better +- Update Translations + +* Thu Aug 15 2013 Dan Walsh - 2.1.14-75 +- Update sepolicy gui code, cleanups and add file transition tab +- Fix semanage fcontext -a --ftype code to work. + +* Wed Aug 7 2013 Dan Walsh - 2.1.14-74 +- If policy is not installed get_bools should not crash + +* Wed Aug 7 2013 Dan Walsh - 2.1.14-73 +- Fix doc versioning + +* Tue Aug 6 2013 Dan Walsh - 2.1.14-72 +- Update sepolicy gui code, cleanups and add file transition tab +- Fix semanage argparse problems + +* Fri Aug 2 2013 Dan Walsh - 2.1.14-71 +- Update sepolicy gui code, adding dbus calls +- Update Translations + +* Fri Jul 26 2013 Dan Walsh - 2.1.14-70 +- Fix semanage argparse bugs +- Update Translations +- Add test suite for semanage command lines + +* Wed Jul 24 2013 Dan Walsh - 2.1.14-69 +- Fix semanage argparse bugs + +* Tue Jul 23 2013 Dan Walsh - 2.1.14-68 +- Fix bugs introduced by previous patch. semanage port +- Update Translations +- Add test suite for sepolicy command lines + +* Fri Jul 19 2013 Dan Walsh - 2.1.14-67 +- Fix bugs introduced by previous patch. semanage port +- Update Translations + +* Wed Jul 17 2013 Dan Walsh - 2.1.14-66 +- Rewrite argparse code in semanage and fix reload problem. + +* Tue Jul 16 2013 Dan Walsh - 2.1.14-65 +- Do not generate shell script or spec file for sepolicy generate --newtype +- Update translations +- Fix sepolicy generate --admin_user man page again +- Fix setsebool to print less verbose error messages by default, add -V for ve + +* Mon Jul 15 2013 Dan Walsh - 2.1.14-64 +- Move audit2allow and audit2why back into -python package + +* Wed Jul 10 2013 Dan Walsh - 2.1.14-63 +- Update sepolicy gui. +- Error out of you call sepolicy gui without policycoreutils-gui package installed +- Fix semanage login -d command +- Update Translations + +* Wed Jul 10 2013 Dan Walsh - 2.1.14-62 +- Update sepolicy gui. + +* Fri Jul 5 2013 Dan Walsh - 2.1.14-61 +- Add Ryan Hallisey sepolicy gui. +- Update Translations + +* Mon Jun 24 2013 Dan Walsh - 2.1.14-60 +- Fix semanage module error handling + +* Sun Jun 23 2013 Dan Walsh - 2.1.14-59 +- Add back default exception handling for errors, which argparse rewrite removed. + +* Fri Jun 21 2013 Dan Walsh - 2.1.14-58 +- Fix generation of booleans in man pages + +* Fri Jun 21 2013 Dan Walsh - 2.1.14-57 +- Remove requires for systemd-sysv +- Move systemd-units require to restorecond section +- Update Tranlasions +- More sepolicy interfaces for gui +- Cleanup man pages for sepolicy generate + +* Wed Jun 19 2013 Dan Walsh - 2.1.14-56 +- Fix semanage export/import commands +- Fix semange module command +- Remove --version option from sandbox + +* Tue Jun 18 2013 Dan Walsh - 2.1.14-55 +- Add man page doc for --role and bash complestion support for sepolicy --role + +* Tue Jun 18 2013 Dan Walsh - 2.1.14-54 +- Make fcdict return a dictionary of dictionaries +- Fix for sepolicy manpage + +* Mon Jun 17 2013 Dan Walsh - 2.1.14-53 +- Add new man pages for each semanage subsection + +* Mon Jun 17 2013 Dan Walsh - 2.1.14-52 +- Fix handling of sepolicy network sorting. +- Additional interfaces needed for sepolicy gui + +* Thu Jun 6 2013 Dan Walsh - 2.1.14-51 +- Fix handling of semanage args + +* Thu Jun 6 2013 Dan Walsh - 2.1.14-50 +- Fix sepolicy generate --confined_admin to generate tunables +- Add new interface to generate entrypoints for use with new gui + +* Wed Jun 5 2013 Dan Walsh - 2.1.14-49 +- Fix handing of semanage with no args + +* Tue Jun 4 2013 Dan Walsh - 2.1.14-48 +- Fix audit2allow -o to open file for append +- Fix the name of the spec file generated in the build script + +* Fri May 31 2013 Dan Walsh - 2.1.14-47 +- Fix mgrepl patch to support all semanage command parsing + +* Sun May 26 2013 Dan Walsh - 2.1.14-46 +- Fix the name of the spec file generated in the build script +- Add mgrepl patch to support argparse for semanage command parsing + +* Tue May 21 2013 Dan Walsh - 2.1.14-45 +- Fix sandbox to always use sandbox_file_t, so generated policy will work. +- Update Translations + +* Thu May 16 2013 Dan Walsh - 2.1.14-44 +- Fix sepolicy-generate man page to clear up options/policy type +- Add Miroslav Grepl to not generate man page when doing + sepolicy generate --customize +- Add support for executing semanage user within spec file +- Fix generation of confined admin domains, to handle booleans properly. + +* Tue May 14 2013 Dan Walsh - 2.1.14-43 +- Need to handle gziped policy.xml as well as not compressed. + +* Tue May 14 2013 Dan Walsh - 2.1.14-42 +- Add support for Xephyr -resizable, so sandbox can now resize window +- Add support for compressed policy.xml +- Miroslav Grepl patch to allow sepolicy interface on individual interface fil +- Also add capability to test interfaces for correctness. + +* Mon May 13 2013 Dan Walsh - 2.1.14-41 +- Apply patches from Sven Vermeulen for sepolgen to fix typos. + +* Mon May 13 2013 Dan Walsh - 2.1.14-40 +- Only require selinux-policy-devel for policycoreutils-devel, this will shrink the size of the livecd. + +* Sun May 12 2013 Dan Walsh - 2.1.14-39 +- Run sepolgen-ifgen in audit2allow and sepolicy generate, if needed, first time +- Add Sven Vermeulen patches to cleanup man pages + +* Fri May 10 2013 Dan Walsh - 2.1.14-38 +- No longer run sepolgen-ifgen at install time. +- Run sepolgen-ifgen in audit2allow and sepolicy generate, if needed. +- Update Translations + +* Mon Apr 22 2013 Dan Walsh - 2.1.14-37 +- Fix exceptionion hanling in audit2allow -o +- Generate Man pages for everydomain, not just ones with exec_t entrypoints +- sepolicy comunicate should return ValueError not TypeError +- Trim header line in sepolicy manpage to use less space +- Add missing options to restorecon man page + +* Thu Apr 11 2013 Dan Walsh - 2.1.14-36 +- Raise proper Exception on sepolicy communicate with invalid value + +* Wed Apr 10 2013 Dan Walsh - 2.1.14-35 +- Update translations +- Add patch by Miroslav Grepl to add compile test for sepolicy interface command. + +* Tue Apr 9 2013 Dan Walsh - 2.1.14-34 +- Update translations +- Add patch inspired by Miroslav Grepl to add extended information for sepolicy interface command. + +* Mon Apr 8 2013 Dan Walsh - 2.1.14-33 +- Update translations +- Add missing man pages and fixup existing man pages + +* Wed Apr 3 2013 Dan Walsh - 2.1.14-32 +- Move sepolicy to policycoreutils-devel pacage, since most of it is used for devel +- Apply Miroslav Grepl Patches for sepolicy +-- Fix generate mutually groups option handling +-- EUSER is used for existing policy +-- customize options can be used together with admin_domain option +-- Fix manpage.py to generate correct man pages for SELinux users +-- Fix policy *.te file generated by customize+writepaths options +-- Fix install script for confined_admin option + +* Mon Apr 1 2013 Dan Walsh - 2.1.14-31 +- Add post install scripts for gui to make sure Icon Cache is refreshed. +- Fix grammar issue in secon man page +- Update Translations + +* Thu Mar 28 2013 Dan Walsh - 2.1.14-30 +- Add buildrequires for OpenBox to prevent me from accidently building into RHEL7 +- Add support for returning alias data to sepolicy.info python bindings + +* Wed Mar 27 2013 Dan Walsh - 2.1.14-28 +- Fix audit2allow output to better align analysys with the allow rules +- Apply Miroslav Grepl patch to clean up sepolicy generate usage +- Apply Miroslav Grepl patch to fixupt handing of admin_user generation +- Update Tranlslations + +* Wed Mar 27 2013 Dan Walsh - 2.1.14-27 +- Allow semanage fcontext -a -t "<>" ... to work + +* Mon Mar 25 2013 Dan Walsh - 2.1.14-26 +- Can not unshare IPC in sandbox, since it blows up Xephyr +- Remove bogus error message sandbox about reseting setfsuid + +* Thu Mar 21 2013 Dan Walsh - 2.1.14-25 +- Fix sepolicy generate --customize to generate policy with -w commands + +* Thu Mar 21 2013 Dan Walsh - 2.1.14-24 +- sepolgen-ifgen needs to handle filename transition rules containing ":" + +* Tue Mar 19 2013 Dan Walsh - 2.1.14-23 +- sepolicy manpage: +- use nroff instead of man2html +- Remove checking for name of person who created the man page +- audit2allow +- Fix output to show the level that is different. + +* Thu Mar 14 2013 Dan Walsh - 2.1.14-22 +- Fix newrole to not drop capabilities from the bounding set. +- Stop dropping capabilities from its children. +- Add better error messages. +- Change location of bash_completion files to /usr/share/bash-completion/compl + +* Mon Mar 11 2013 Dan Walsh - 2.1.14-21 +- sepolicy generate should look for booleans that effect equivalence names, and add them to the man page + +* Thu Mar 7 2013 Dan Walsh - 2.1.14-20 +- Mention creation of permissive domains in sepolicy generate man page +- Change sepolicy manpage to use shortname with an "_" to stop accidently grabbing unrelated types for a domain. +- Fix audit2allow to show better information on constraint violations. + +* Wed Mar 6 2013 Dan Walsh - 2.1.14-19 +- Have restorecon exit -1 on errors for consistancy. + +* Tue Mar 5 2013 Dan Walsh - 2.1.14-18 +- Need to provide a value to semanage boolean -m + +* Mon Mar 4 2013 Dan Walsh - 2.1.14-17 +- Fix cut and paste errors for sepolicy network command + +* Fri Mar 1 2013 Dan Walsh - 2.1.14-16 +- Fix sepoicy interface to work properly + +* Thu Feb 28 2013 Dan Walsh - 2.1.14-15 +- Fix fixfiles to use exclude_dirs on fixfiles restore + +* Thu Feb 28 2013 Dan Walsh - 2.1.14-14 +- Allow users with symlinked homedirs to work. call realpath on homedir +- Fix sepolicy reorganization of helper functions. + +* Sun Feb 24 2013 Dan Walsh - 2.1.14-13 +- Update trans +- Fix sepolicy reorganization of helper functions. + +* Sun Feb 24 2013 Rahul Sundaram - 2.1.14-13 +- remove vendor tag from desktop file. https://fedorahosted.org/fpc/ticket/247 +- clean up spec to follow current guidelines + +* Fri Feb 22 2013 Dan Walsh - 2.1.14-12 +- Do not load interface file by default when sepolicy is called, mov get_all_methods to the sepolicy package + +* Fri Feb 22 2013 Dan Walsh - 2.1.14-11 +- sepolgen-ifgen should use the current policy path if selinux is enabled + +* Fri Feb 22 2013 Dan Walsh - 2.1.14-10 +- Fix sepolicy to be able to work on an SELinux disabled system. +- Needed to be able to build man pages in selinux-policy package + +* Thu Feb 21 2013 Dan Walsh - 2.1.14-9 +- Add yum to requires of policycoreutils-python since sepolicy requires it. + +* Thu Feb 21 2013 Dan Walsh - 2.1.14-8 +- Sepolixy should not throw an exception on an SELinux disabled machine +- Switch from using console app to using pkexec, so we will work better +with policykit. +- Add missing import to fix system-config-selinux startup +- Add comment to pamd files about pam_rootok.so +- Fix sepolicy generate to not comment out the first line + +* Wed Feb 20 2013 Dan Walsh - 2.1.14-7 +- Add --root/-r flag to sepolicy manpage, +- This allows us to generate man pages on the fly in the selinux-policy build + +* Mon Feb 18 2013 Dan Walsh - 2.1.14-6 +- Fix newrole to retain cap_audit_write when compiled with namespace, also +do not drop capabilities when run as root. + +* Thu Feb 14 2013 Dan Walsh - 2.1.14-5 +- Fix man page generation and public_content description + +* Thu Feb 14 2013 Dan Walsh - 2.1.14-4 +- Revert some changes which are causing the wrong policy version file to be created +- Switch sandbox to start using openbox rather then matchbox +- Make sepolgen a symlink to sepolicy +- update translations + +* Wed Feb 13 2013 Dan Walsh - 2.1.14-3 +- Fix empty system-config-selinux.png, again + +* Tue Feb 12 2013 Dan Walsh - 2.1.14-2 +- Fix empty system-config-selinux.png + +* Thu Feb 7 2013 Dan Walsh - 2.1.14-1 +- Update to upstream + * setfiles: estimate percent progress + * load_policy: make link at the destination directory + * Rebuild polgen.glade with glade-3 + * sepolicy: new command to unite small utilities + * sepolicy: Update Makefiles and po files + * sandbox: use sepolicy to look for sandbox_t + * gui: switch to use sepolicy + * gui: sepolgen: use sepolicy to generate + * semanage: use sepolicy for boolean dictionary + * add po file configuration information + * po: stop running update-po on all + * semanage: seobject verify policy types before allowing you to assign them. + * gui: Start using Popen, instead of os.spawnl + * sandbox: Copy /var/tmp to /tmp as they are the same inside + * qualifier to shred content + * semanage: Fix handling of boolean_sub names when using the -F flag + * semanage: man: roles instead of role + * gui: system-config-selinux: Catch no DISPLAY= error + * setfiles: print error if no default label found + * semanage: list logins file entries in semanage login -l + * semanage: good error message is sepolgen python module missing + * gui: system-config-selinux: do not use lokkit + * secon: add support for setrans color information in prompt output + * restorecond: remove /etc/mtab from default list + * gui: If you are not able to read enforcemode set it to False + * genhomedircon: regenerate genhomedircon more often + * restorecond: Add /etc/udpatedb.conf to restorecond.conf + * genhomedircon generation to allow spec file to pass in SEMODULE_PATH + * fixfiles: relabel only after specific date + * po: update translations + * sandbox: seunshare: do not reassign realloc value + * seunshare: do checking on setfsuid + * sestatus: rewrite to shut up coverity + +* Thu Jan 31 2013 Dan Walsh - 2.1.12-58 +- Reorginize sepolicy so all get_all functions are in main module +- Add -B capability to fixfiles onboot and fixfiles restore, basically searches for all files created since the last boot. + +* Fri Jan 25 2013 Dan Walsh - 2.1.12-57 +- Update to latest patches from eparis/Upstream +- fixfiles onboot will write any flags handed to it to /.autorelabel. +- * Patch sent to initscripts to have fedora-autorelabel pass flags back to fixfiles restore +- * This should allow fixfiles -F onboot, to force a hard relabel. +- Add -p to show progress on full relabel. + +* Tue Jan 15 2013 Dan Walsh - 2.1.12-56 +- Additional changes for bash completsion and generate man page to match the w +- Add newtype as a new qualifier to sepolicy generate. This new mechanism wil +- a policy write to generate types after the initial policy has been written a +- will autogenerate all of the interfaces. +- I also added a -w options to allow policy writers from the command line to s +- the writable directories of files. +- +- Modify network.py to include interface definitions for newly created port type +- Standardize of te_types just like all of the other templates. + +- Change permissive domains creation to raise exception if sepolgen is not ins +- get_te_results no longer needs or uses the opts parameter. +- The compliler was complaining so I just removed the option. +- Start returning analysis data for audit2allow + +* Tue Jan 15 2013 Dan Walsh - 2.1.12-55 +- Update Translations +- Fix handling of semanage generate --cgi -n MODULE PATHTO/CGI +- This fixes the spec file and script file getting wrong names for modules and types. + +* Wed Jan 9 2013 Dan Walsh - 2.1.12-54 +- Additional patch from Miroslav to handle role attributes + +* Wed Jan 9 2013 Dan Walsh - 2.1.12-53 +- Update with Miroslav patch to handle role attributes +- Update Translations +- import sepolicy will only throw exception on missing policy iff selinux is enabled + +* Sat Jan 5 2013 Dan Walsh - 2.1.12-52 +- Update to latest patches from eparis/Upstream +- secon: add support for setrans color information in prompt output +- Update translations + +* Fri Jan 4 2013 Dan Walsh - 2.1.12-51 +- Update translations +- Fix sepolicy booleans to handle autogenerated booleans descriptions +- Cleanups of sepolicy manpage +- Fix crash on git_shell man page generation + +* Thu Jan 3 2013 Dan Walsh - 2.1.12-50 +- Update translations +- update sepolicy manpage to generate fcontext equivalence data and to list +default file context paths. +- Add ability to generate policy for confined admins and domains like puppet. + +* Thu Dec 20 2012 Dan Walsh - 2.1.12-49 +- Fix semanage permissive , this time with the patch. +- Update translations + +* Wed Dec 19 2012 Dan Walsh - 2.1.12-48 +- Fix semanage permissive +- Change to use correct gtk forward button +- Update po + +* Mon Dec 17 2012 Dan Walsh - 2.1.12-47 +- Move audit2why to -devel package + +* Mon Dec 17 2012 Dan Walsh - 2.1.12-46 +- sepolicy transition was blowing up. Also cleanup output when only source is specified. +- sepolicy generate should allow policy modules names that include - or _ + +* Mon Dec 10 2012 Dan Walsh - 2.1.12-45 +- Apply patch from Miroslav to display proper range description in man pages g +- Should print warning on missing default label when run in recusive mode iff +- Remove extra -R description, and fix recursive description + +* Thu Dec 6 2012 Dan Walsh - 2.1.12-44 +- Additional fixes for disabled SELinux Box +- system-config-selinux no longer relies on lokkit for /etc/selinux/config + +* Thu Dec 6 2012 Dan Walsh - 2.1.12-43 +- sepolicy should failover to installed policy file on a disabled SELinux box, if it exists. + +* Wed Dec 5 2012 Dan Walsh - 2.1.12-42 +- Update Translations +- sepolicy network -d needs to accept multiple domains + +* Fri Nov 30 2012 Dan Walsh - 2.1.12-41 +- Add --path as a parameter to sepolicy generate +- Print warning message if program does not exists when generating policy, and do not attempt to run nm command +- Fix sepolicy generate -T to not take an argument, and supress the help message +- Since this is really just a testing tool + +* Fri Nov 30 2012 Dan Walsh - 2.1.12-40 +- Fix sepolicy communicate to handle invalid input + +* Thu Nov 29 2012 Dan Walsh - 2.1.12-39 +- Fix sepolicy network -p to handle high ports + +* Thu Nov 29 2012 Dan Walsh - 2.1.12-38 +- Fix handling of manpages without entrypoints, nsswitch domains +- Update Translations + +* Wed Nov 28 2012 Dan Walsh - 2.1.12-37 +- Move sepogen python bindings back into policycoreutils-python out of -devel, since sepolicy is using the + +* Tue Nov 27 2012 Dan Walsh - 2.1.12-36 +- Fix sepolicy/__init__.py to handle _() + +* Wed Nov 21 2012 Dan Walsh - 2.1.12-35 +- Add Miroslav Grepl patch to create etc_rw_t sock files policy + +* Fri Nov 16 2012 Dan Walsh - 2.1.12-34 +- Fix semanage to work without policycoreutils-devel installed +- Update translations + +* Tue Nov 13 2012 Dan Walsh - 2.1.12-33 +- Fix semanage login -l to list contents of /etc/selinux/POLICY/logins directory + +* Tue Nov 13 2012 Dan Walsh - 2.1.12-32 +- Fix booleansPage not showing booleans +- Fix audit2allow -b + +* Tue Nov 13 2012 Dan Walsh - 2.1.12-31 +- Fix sepolicy booleans again +- Fix man page + +* Mon Nov 12 2012 Dan Walsh - 2.1.12-30 +- Move policy generation tools into policycoreutils-devel + +* Mon Nov 12 2012 Dan Walsh - 2.1.12-29 +- Document and fix sepolicy booleans +- Update Translations +- Fix several spelling mistakes + +* Wed Nov 7 2012 Dan Walsh - 2.1.12-27 +- Only report restorecon warning for missing default label, if not running +recusively +- Update translations + +* Mon Nov 5 2012 Dan Walsh - 2.1.12-26 +- Fix semanage booleans -l, move more boolean_dict handling into sepolicy +- Update translations +- Fixup sepolicy generate to discover /var/log, /var/run and /var/lib directories if they match the name +- Fix kill function call should indicate signal_perms not kill capability +- Error out cleanly in system-config-selinux, if it can not contact XServer + +* Mon Nov 5 2012 Dan Walsh - 2.1.12-25 +- Remove run_init, no longer needed with systemd. +- Fix sepolicy generate to not include subdirs in generated fcontext file. (mgrepl patch) + +* Sat Nov 3 2012 Dan Walsh - 2.1.12-24 +- Fix manpage to generate proper man pages for alternate policy, +basically allow me to build RHEL6 man pages on a Fedora 18 box, as long as +I pull the policy, policy.xml and file_contexts and file_contexts.homedir + +* Thu Nov 1 2012 Dan Walsh - 2.1.12-23 +- Fix some build problems in sepolicy manpage and sepolicy transition + +* Tue Oct 30 2012 Dan Walsh - 2.1.12-22 +- Add alias man pages to sepolicy manpage + +* Mon Oct 29 2012 Dan Walsh - 2.1.12-21 +- Redesign sepolicy to only read the policy file once, not for every call + +* Mon Oct 29 2012 Dan Walsh - 2.1.12-20 +- Fixes to sepolicy transition, allow it to list all transitions from a domain + +* Sat Oct 27 2012 Dan Walsh - 2.1.12-19 +- Change sepolicy python bindings to have python pick policy file, fixes weird memory problems in sepolicy network + +* Fri Oct 26 2012 Dan Walsh - 2.1.12-18 +- Allow sepolicy to specify the policy to generate content from + +* Thu Oct 25 2012 Dan Walsh - 2.1.12-17 +- Fix semanage boolean -F to handle boolean subs + +* Thu Oct 25 2012 Dan Walsh - 2.1.12-16 +- Add Miroslav Grepl patch to generate html man pages +- Update Translations +- Add option to sandbox to shred files before deleting + +* Mon Oct 22 2012 Dan Walsh - 2.1.12-15 +- Add Requires(post) PKGNAME to sepolicy generate /usr/bin/pkg + +* Fri Oct 19 2012 Dan Walsh - 2.1.12-14 +- Add role_allow to sepolicy.search python bindings, this allows us to remove last requirement for setools-cmdline in gui tools. +- Fix man page generator. + +* Wed Oct 17 2012 Dan Walsh - 2.1.12-13 +- Remove dwalsh@redhat.com from man pages +- Fix spec file for sepolicy generate + +* Wed Oct 17 2012 Dan Walsh - 2.1.12-12 +- Add missing spec.py from templates directory needed for sepolicy generate +- Add /var/tmp as collection point for sandbox apps. + +* Tue Oct 16 2012 Dan Walsh - 2.1.12-11 +- Handle audit2allow -b in foreign locales + +* Tue Oct 16 2012 Dan Walsh - 2.1.12-10 +- Update sepolicy generate with patch to create spec file and man page. +- Patch initiated by Miroslav Grepl + +* Wed Oct 10 2012 Dan Walsh - 2.1.12-9 +- Fix semanage to verify that types are appropriate for commands. + * Patch initiated by mgrepl + * Fixes problem of specifying non file_types for fcontext, or not port_types for semanage port + +* Tue Oct 9 2012 Dan Walsh - 2.1.12-8 +- Fix typo in preunstall line for restorecond +- Add mgrepl patch to consolidate file context generated by sepolicy generate + +* Mon Oct 8 2012 Dan Walsh - 2.1.12-7 +- Fix manpage generation, missing import +- Add equiv_dict to get samba booleans into smbd_selinux +- Add proper translations for booleans and remove selinux.tbl + +* Sat Oct 6 2012 Dan Walsh - 2.1.12-6 +- Fix system-config-selinux to use sepolicy.generate instead of sepolgen + +* Thu Oct 4 2012 Dan Walsh - 2.1.12-5 +- Add sepolicy commands, and change tools to use them. + +* Tue Sep 25 2012 Dan Walsh - 2.1.12-4 +- Rebuild without bogus prebuild 64 bit seunshare app + +* Sun Sep 16 2012 Dan Walsh - 2.1.12-3 +- Allow fixfiles to specify -v, so they can get verbosity rather then progress. +- Fix load_file Makefile to use SBINDIR rather then real OS. +- Fix man pages in setfiles and restorecon to reflect what happens when you relabel the entire OS. + +* Sun Sep 16 2012 Dan Walsh - 2.1.12-2 +- Use systemd post install scriptlets + +* Thu Sep 13 2012 Dan Walsh - 2.1.12-1 +- Update to upstream + * genhomedircon: manual page improvements + * setfiles/restorecon minor improvements + * run_init: If open_init_pty is not available then just use exec + * newrole: do not drop capabilities when newrole is run as + * restorecon: only update type by default + * scripts: Don't syslog setfiles changes on a fixfiles restore + * setfiles: do not syslog if no changes + * Disable user restorecond by default + * Make restorecon return 0 when a file has changed context + * setfiles: Fix process_glob error handling + * semanage: allow enable/disable under -m + * add .tx to gitignore + * translations: commit translations from Fedora community + * po: silence build process + * gui: Checking in policy to support polgengui and sepolgen. + * gui: polgen: search for systemd subpackage when generating policy + * gui: for exploring booleans + * gui: system-config-selinux gui + * Add Makefiles to support new gui code + * gui: remove lockdown wizard + * return equivalency records in fcontext customized + * semanage: option to not load new policy into kernel after + * sandbox: manpage update to describe standard types + * setsebool: -N should not reload policy on changes + * semodule: Add -N qualifier to no reload kernel policy + * gui: polgen: sort selinux types of user controls + * gui: polgen: follow symlinks and get the real path to + * gui: Fix missing error function + * setfiles: return errors when bad paths are given + * fixfiles: tell restorecon to ignore missing paths + * setsebool: error when setting multiple options + * semanage: use boolean subs. + * sandbox: Make sure Xephyr never listens on tcp ports + * sepolgen: return and output constraint violation information + * semanage: skip comments while reading external configuration files + * restorecond: relabel all mount runtime files in the restorecond example + * genhomedircon: dynamically create genhomedircon + * Allow returning of bastard matches + * sepolgen: return and output constraint violation information + * audit2allow: one role/type pair per line + +* Wed Aug 8 2012 Dan Walsh - 2.1.11-6 +- Change polgen to generate dbus apps as optional so they can compile on minimal policy system, patch from Miroslav Grepl + +* Fri Jul 27 2012 Dan Walsh - 2.1.11-5 +- Fix sepolgen/audit2allow to handle multiple role/types in avc messages properly + +* Thu Jul 19 2012 Dan Walsh - 2.1.11-4 +- Fix restorecon to generate a better percentage of completion on restorecon -R /. +- Have audit2allow look at the constaint violation and tell the user whether it +- is because of user,role or level + + +* Wed Jul 11 2012 Dan Walsh - 2.1.11-3 +- userapps is generating sandbox code in polgengui + +* Thu Jul 5 2012 Dan Walsh - 2.1.11-2 +- Remove load_policy symbolic link on usrmove systems this breaks the system + +* Wed Jul 4 2012 Dan Walsh - 2.1.11-1 +- Update to upstream + - policycoreutils + * restorecond: wrong options should exit with non-zero error code + * restorecond: Add -h option to get usage command + * resorecond: user: fix fd leak + * mcstrans: add -f to run in foreground + * semanage: fix man page range and level defaults + * semanage: bash completion for modules should include -a,-m, -d + * semanage: manpage update for -e + * semanage: dontaudit off should work + * semanage: locallist option does not take an argument + * sepolgen: Make use of setools optional within sepolgen + - sepolgen + * Make use of setools optional within sepolgen + * We need to support files that have a + in them + +* Thu May 24 2012 Dan Walsh - 2.1.11-18 +- Make restorecon exit with an error on a bad path + +* Thu May 24 2012 Dan Walsh - 2.1.11-17 +- Fix setsebool command, handling of = broken. +- Add missing error option in booleansPage + +* Sun May 20 2012 Dan Walsh - 2.1.11-16 +- Fix sepolgen to use realpath on executables handed to it. - Brian Bickford + +* Fri May 18 2012 Dan Walsh - 2.1.11-15 +- Allow stream sock_files to be stored in /tmp and etc_rw_t directories by sepolgen +- Trigger on selinux-policy needs to change to selinux-policy-devel +- Update translations +- Fix semanage dontaudit off/on exception + +* Tue May 8 2012 Dan Walsh - 2.1.11-12 +- Add -N qualifier to semanage, setsebool and semodule to allow you to update +- policy without reloading it into the kernel. + +* Thu May 3 2012 Dan Walsh - 2.1.11-11 +- add some definition to the standard types available for sandboxes + +* Tue May 1 2012 Dan Walsh - 2.1.11-10 +- Remove lockdown wizard + +* Mon Apr 30 2012 Dan Walsh - 2.1.11-9 +- Fix semanage fcontext -E to extract the equivalance customizations. + +* Thu Apr 26 2012 Dan Walsh - 2.1.11-8 +- Add mgrepl patch to have sepolgen search for -systemd rpm packages + +* Tue Apr 24 2012 Dan Walsh - 2.1.11-7 +- Apply Stef Walter patch for semanage man page + +* Mon Apr 23 2012 Dan Walsh - 2.1.11-6 +- Rebuild to get latest libsepol which fixes the file_name transition problems +- Update translations +- Fix calls to close fd for restorecond + +* Fri Apr 13 2012 Dan Walsh - 2.1.11-5 +- Update translations +- Fix sepolgen to discover unit files in /lib/systemd/ + +* Tue Apr 3 2012 Dan Walsh - 2.1.11-4 +- Update translations +- Fix segfault on restorecon + +* Tue Apr 3 2012 Dan Walsh - 2.1.11-3 +- Allow filename transitions to use + in a file name + +* Fri Mar 30 2012 Dan Walsh - 2.1.11-2 +- Change policycoreutils-python to require selinux-policy-devel package + +* Thu Mar 29 2012 Dan Walsh - 2.1.11-1 +- Update to upstream + - policycoreutils + * sandbox: do not propogate inside mounts outside + * sandbox: Removing sandbox init script, should no longer be necessary + * restorecond: Stop using deprecated interfaces for g_io + * semanage: proper auditting of user changes for LSPP + * semanage: audit message to show what record(s) and item(s) have chaged + * scripts: Update Makefiles to handle /usrmove + * mcstrans: Version should have been bumped on last check in + * seunshare: Only drop caps not the Bounding Set from seunshare + * Add bash-completion scripts for setsebool and semanage + * newrole: Use correct capng calls in newrole + * Fix infinite loop with inotify on 2.6.31 kernels + * fix ftbfs with hardening flags + * Only run setfiles if we found read-write filesystems to run it on + * update .po files + * remove empty po files + * do not fail to install if unable to make load_policy lnk file + + - sepolgen + * Fix dead links to www.nsa.gov/selinux + * audit.py Dont crash if empty data is passed to sepolgen + * do not use md5 when calculating hash signatures + * fix detection of policy loads + +* Wed Mar 28 2012 Dan Walsh - 2.1.10-30 +- Have sepolgen script specify the pp file with the make command. From mgrepl. + +* Wed Mar 21 2012 Dan Walsh - 2.1.10-29 +- Fix sepolgen handling of unit files. + +* Thu Mar 8 2012 Dan Walsh - 2.1.10-28 +- Require selinux-policy-doc + +* Thu Mar 8 2012 Dan Walsh - 2.1.10-27 +- Fix unit file handling in sepolgen + +* Wed Feb 29 2012 Dan Walsh - 2.1.10-26 +- Add bash_command completion for setsebool/getsebool + +* Mon Feb 27 2012 Dan Walsh - 2.1.10-25 +- Disable restorecond on desktop by default +- Change seunshare to not modify the bounding set + +* Mon Feb 20 2012 Dan Walsh - 2.1.10-24 +- Stop using sandbox init in post install since it no longer exists. + +* Thu Feb 16 2012 Dan Walsh - 2.1.10-23 +- Change to use new selinux_current_policy_path() + +* Wed Feb 15 2012 Dan Walsh - 2.1.10-22 +- Change to use new selinux_binary_policy_path() +- Add systemd_passwd_agent_exec($1), and systemd_read_fifo_file_passwd_run($1) to templates for _admin interface + +* Fri Feb 3 2012 Dan Walsh - 2.1.10-21 +- On full relabels we will now show a estimated percent complete rather then +just *s. + +* Wed Feb 1 2012 Dan Walsh - 2.1.10-20 +- Add unit_file.py for sepolgen + +* Tue Jan 31 2012 Dan Walsh - 2.1.10-19 +- Change sepolgen to use sha256 instead of md5 + +* Mon Jan 30 2012 Dan Walsh - 2.1.10-18 +- Stop syslogging on full restore +- Stop syslogging when restorecon is not changing values + +* Fri Jan 27 2012 Dan Walsh - 2.1.10-17 +- Change semanage to produce proper audit records for Common Criteria +- Cleanup packaging for usrmove + +* Thu Jan 26 2012 Harald Hoyer 2.1.10-16 +- fixed load_policy location + +* Thu Jan 26 2012 Harald Hoyer 2.1.10-15 +- fixed load_policy location + +* Thu Jan 26 2012 Harald Hoyer 2.1.10-14 +- fixed load_policy location + +* Wed Jan 25 2012 Harald Hoyer 2.1.10-13 +- add filesystem guard + +* Wed Jan 25 2012 Harald Hoyer 2.1.10-12 +- install everything in /usr + https://fedoraproject.org/wiki/Features/UsrMove + +* Tue Jan 24 2012 Dan Walsh - 2.1.10-11 +- restorecond fixes: + Stop using depracated g_io interfaces + Exit with non zero exit code if wrong options given + Add -h option + +* Thu Jan 19 2012 Dan Walsh - 2.1.10-10 +- Eliminate not needed Requires + +* Wed Jan 18 2012 Dan Walsh - 2.1.10-9 +- fix sepolgen to not crash on echo "" | audit2allow + +* Mon Jan 16 2012 Dan Walsh - 2.1.10-8 +- Remove sandbox init script, should no longer be necessary + +* Sun Jan 15 2012 Dan Walsh - 2.1.10-7 +- Add unit file support to sepolgen, and cleanup some of the output. + +* Mon Jan 9 2012 Dan Walsh - 2.1.10-5 +- Fix English in templates for sepolgen + +* Fri Dec 23 2011 Dan Walsh - 2.1.10-4 +- Fix the handling of namespaces in seunshare/sandbox. +- Currently mounting of directories within sandbox is propogating to the +- parent namesspace. + +* Thu Dec 22 2011 Dan Walsh - 2.1.10-3 +- Add umount code to seunshare to cleanup left over mounts of /var/tmp + +* Wed Dec 21 2011 Dan Walsh - 2.1.10-2 +- Remove open_init_pty + +* Wed Dec 21 2011 Dan Walsh - 2.1.10-1 +-Update to upstream +- sepolgen + * better analysis of why things broke +- policycoreutils + * Remove excess whitespace + * sandbox: Add back in . functions to sandbox.init script + * Fix Makefile to match other policycoreutils Makefiles + * semanage: drop unused translation getopt + +* Thu Dec 15 2011 Dan Walsh - 2.1.9-3 +- Bump libsepol version requires rebuild + +* Wed Dec 7 2011 Dan Walsh - 2.1.9-2 +- Add back accidently dropped patches for semanage + +* Tue Dec 6 2011 Dan Walsh - 2.1.9-1 +- Upgrade to upstream + * sandbox: move sandbox.conf.5 to just sandbox.5 + * po: Makefile use -p to preserve times to allow multilib simultatious installs + * of po files + * sandbox: Allow user to specify the DPI value for X in a sandbox + * sandbox: make sure the domain launching sandbox has at least 100 categories + * sandbox: do not try forever to find available category set + * sandbox: only complain if sandbox unable to launch + * sandbox: init script run twice is still successful + * semanage: print local and dristo equiv rules + * semanage: check file equivalence rules for conflict + * semanage: Make sure semanage fcontext -l -C prints even if local keys + * are not defined + * semanage: change src,dst to target,substitute for equivalency + * sestatus: Updated sestatus and man pages. + * Added SELinux config file man page. + * add clean target to man Makefile + +* Wed Nov 30 2011 Dan Walsh - 2.1.8-8 +- Fix semange fcontext -a to check for more conflicts on equivalency + +* Tue Nov 29 2011 Dan Walsh - 2.1.8-7 +- Fix dpi handling in sandbox +- Make sure semanage fcontext -l -C prints if only local equiv have changed + +* Wed Nov 16 2011 Dan Walsh - 2.1.8-6 +- Add listing of distribution equivalence class from semanage fcontext -l +- Add checking to semanage fcontext -a to guarantee a file specification will not be masked by an equivalence + +* Wed Nov 16 2011 Dan Walsh - 2.1.8-5 +- Allow ~ as a valid part of a filename in sepolgen + +* Fri Nov 11 2011 Dan Walsh - 2.1.8-4 +- sandbox init script should always return 0 +- sandbox command needs to check range of categories and report error if not big enough + +* Mon Nov 7 2011 Dan Walsh - 2.1.8-3 +- Allow user to specify DPI when running sandbox + +* Mon Nov 7 2011 Dan Walsh - 2.1.8-2 +- Add Miroslav patch to return all attributes + +* Fri Nov 4 2011 Dan Walsh - 2.1.8-1 +- Upgrade to policycoreutils upstream + * sandbox: Maintain the LANG environment into the sandbox + * audit2allow: use audit2why internally + * fixfiles: label /root but not /var/lib/BackupPC + * semanage: update local boolean settings is dealing with localstore + * semanage: missing modify=True + * semanage: set modified correctly + * restorecond: make restorecond dbuss-able + * restorecon: Always check return code on asprintf + * restorecond: make restorecond -u exit when terminal closes + * sandbox: introduce package name and language stuff + * semodule_package: remove semodule_unpackage on clean + * fix sandbox Makefile to support DESTDIR + * semanage: Add -o description to the semanage man page + * make use of the new realpath_not_final function + * setfiles: close /proc/mounts file when finished + * semodule: Document semodule -p in man page + * setfiles: fix use before initialized + * restorecond: Add .local/share as a directory to watch +- Upgrade to sepolgen upstream + * Ignore permissive qualifier if found in an interface + * Return name field in avc data + +* Mon Oct 31 2011 Dan Walsh - 2.1.7-6 +- Rebuild versus newer libsepol + +* Fri Oct 28 2011 Dan Walsh - 2.1.7-5 +- A couple of minor coverity fixes for a potential leaked file descriptor +- An an unchecked return code. +- Add ~/.local/share/* to restorecond_user watches + +* Thu Oct 13 2011 Dan Walsh - 2.1.7-4 +- Have sepolgen return name field in AVC + +* Thu Oct 6 2011 Dan Walsh - 2.1.7-3 +- restorecond -u needs to watch terminal for exit if run outside of dbus. + +* Tue Oct 4 2011 Dan Walsh - 2.1.7-2 +- Do not drop capabilities if running newrole as root + +* Fri Sep 30 2011 Dan Walsh - 2.1.7-1 +-Update to upstream + * semanage: fix indentation error in seobject + +* Thu Sep 29 2011 Dan Walsh - 2.1.6-3 +- Ignore permissive commands in interfaces + +* Thu Sep 29 2011 Dan Walsh - 2.1.6-2 +- Remove gnome requirement from polgengui + +* Mon Sep 19 2011 Dan Walsh - 2.1.6-1 +-Update to upstream + policycoreutils-2.1.6 + * sepolgen-ifgen: new attr-helper does something + * audit2allow: use alternate policy file + * audit2allow: sepolgen-ifgen use the attr helper + * setfiles: switch from stat to stat64 + * setfiles: Fix potential crash using dereferenced ftsent + * setfiles: do not wrap * output at 80 characters + * sandbox: add -Wall and -Werror to makefile + * sandbox: add sandbox cgroup support + * sandbox: rewrite /tmp handling + * sandbox: do not bind mount so much + * sandbox: add level based kill option + * sandbox: cntrl-c should kill entire process control group + * Create a new preserve_tunables flag in sepol_handle_t. + * semanage: show running and disk setting for booleans + * semanage: Dont print heading if no items selected + * sepolgen: audit2allow is mistakakenly not allowing valid module names + * semanage: Catch RuntimeErrors, that can be generated when SELinux is disabled + * More files to ignore + * tree: default make target to all not install + * sandbox: do not load unused generic init functions + sepolgen-1.1.2 + * src: sepolgen: add attribute storing infrastructure + * Change perm-map and add open to try to get better results on + * look for booleans that might solve problems + * sepolgen: audit2allow is mistakakenly not allowing valid module names + * tree: default make target to all not install + +* Wed Sep 14 2011 Dan Walsh - 2.1.5-6 +- Change separator on -L from ; to : + +* Thu Sep 8 2011 Dan Walsh - 2.1.5-5 +- Add back lockdown wizard for booleans using pywebkitgtk + +* Wed Sep 7 2011 Dan Walsh - 2.1.5-4 +- Maintain the LANG environment Variable into the sandbox +- Change restorecon/setfiles to only change type part of the context unless + -f qualifier is given + +* Tue Sep 6 2011 Dan Walsh - 2.1.5-3 +- Remove lockdown wizard, since gtkhtml2 is no longer supported. + +* Fri Sep 2 2011 Dan Walsh - 2.1.5-2 +- Allow setfiles and restorecon to use labeledprefix to speed up processing +and limit memory. + +* Tue Aug 30 2011 Dan Walsh - 2.1.5-1 +-Update to upstream + * policycoreutils + * setfiles: Fix process_glob to handle error situations + * sandbox: Allow seunshare to run as root + * sandbox: trap sigterm to make sure sandbox + * sandbox: pass DPI from the desktop + * sandbox: seunshare: introduce helper spawn_command + * sandbox: seunshare: introduce new filesystem helpers + * sandbox: add -C option to not drop + * sandbox: split seunshare caps dropping + * sandbox: use dbus-launch + * sandbox: numerous simple updates to sandbox + * sandbox: do not require selinux context + * sandbox: Makefile: new man pages + * sandbox: rename dir to srcdir + * sandbox: allow users specify sandbox window size + * sandbox: check for paths up front + * sandbox: use defined values for paths rather + * sandbox: move seunshare globals to the top + * sandbox: whitespace fix + * semodule_package: Add semodule_unpackage executable + * setfiles: get rid of some stupid globals + * setfiles: move exclude_non_seclabel_mounts to a generic location + * sepolgen + * refparser: include open among valid permissions + * refparser: add support for filename_trans rules + +* Thu Aug 18 2011 Dan Walsh - 2.1.4-2 +- Fix bug in glob handling for restorecon + +* Thu Aug 18 2011 Dan Walsh - 2.1.4-1 +-Update to upstream +2.1.4 2011-08-17 + * run_init: clarification of the usage in the + * semanage: fix usage header around booleans + * semanage: remove useless empty lines + * semanage: update man page with new examples + * semanage: update usage text + * semanage: introduce file context equivalencies + * semanage: enable and disable modules + * semanage: output all local modifications + * semanage: introduce extraction of local configuration + * semanage: cleanup error on invalid operation + * semanage: handle being called with no arguments + * semanage: return sooner to save CPU time + * semanage: surround getopt with try/except + * semanage: use define/raise instead of lots of + * semanage: some options are only valid for + * semanage: introduce better deleteall support + * semanage: do not allow spaces in file + * semanage: distinguish between builtin and local permissive + * semanage: centralized ip node handling + * setfiles: make the restore function exclude() non-static + * setfiles: use glob to handle ~ and + * fixfiles: do not hard code types + * fixfiles: stop trying to be smart about + * fixfiles: use new kernel seclabel option + * fixfiles: pipe everything to cat before sending + * fixfiles: introduce /etc/selinux/fixfiles_exclude_dirs + * semodule: support for alternative root paths + +2.1.3 2011-08-03 + * semanage: fix indention + * semodule_package: fix man page typo + * semodule_expand: update man page with -a + * semanage: handle os errors + * semanage: fix traceback with bad options + * semanage: show usage on -h or --help + * semanage: introduce more deleteall options + * semanage: verify ports < 65536 + * transaction into semanageRecords + * make get_handle a method of semanageRecords + * remove a needless blank line + * make process_one error if not initialized correctly + * fixfiles: correct usage for r_opts.rootpath + * put -p in help for restorecon and + * fixfiles: do not try to only label + * fixfiles clean up /var/run and /var/lib/debug + * fixfiles delete tmp sockets and pipes rather + * fixfile use find -delete instead of pipe + * chcat man page typo + * add man page for genhomedircon + * setfiles fix typo + * setsebool should inform users they need to + * setsebool typos + * open_init_tty man page typos + * Don't add user site directory to sys.path + * newrole retain CAP_SETPCAP + +2.1.2 2011-08-02 + * seunshare: define _GNU_SOURCE earlier + * make ignore_enoent do something + * restorecond: first user logged in is not noticed + * Repo: update .gitignore + +2.1.1 2011-08-01 + * Man page updates + * restorecon fix for bad inotify assumptions + +2.1.0 2011-07-27 + * Release, minor version bump + +* Tue Jul 26 2011 Dan Walsh 2.0.86-20 +- Fix sepolgen usage statement +- Stop using -k insandbox +- Fix seunshare usage statement + +* Thu Jul 7 2011 Dan Walsh 2.0.86-18 +- Change seunshare to send kill signals to the childs session. +- Also add signal handler to catch sigint, so if user enters ctrl-C sandbox will shutdown. + +* Wed Jul 6 2011 Dan Walsh 2.0.86-17 +- Add -k qualifier to seunshare to have it attempt to kill all processes with +the matching MCS label. + +* Tue Jul 5 2011 Dan Walsh 2.0.86-16 +- Add -C option to sandbox and seunshare to maintain capabilities, otherwise +the bounding set will be dropped. +- Change --cgroups short name -c rather then -C for consistancy +- Fix memory and fd leaks in seunshare + +* Wed Jun 29 2011 Jóhann B. Guðmundsson - 2.0.86-15 +- Introduce systemd unit file for restorecond drop SysV support + +* Mon Jun 13 2011 Dan Walsh 2.0.86-14 +- Do not drop capability bounding set in seunshare, this allows sandbox to +- run setuid apps. + +* Fri Jun 10 2011 Dan Walsh 2.0.86-13 +- Add semanage-bash-completion.sh script + +* Tue Jun 7 2011 Dan Walsh 2.0.86-12 +- Remove mount -o bind calls from sandbox init script +- pam_namespace now has this built in. + +* Tue Jun 7 2011 Dan Walsh 2.0.86-11 +- Pass desktop dpi to sandbox Xephyr window + +* Mon Jun 6 2011 Dan Walsh 2.0.86-10 +- Allow semodule to pick alternate root for selinux files +- Add ~/.config/* to restorcond_user.conf, so restorecond will watch for mislabeled files in this directory. + +* Wed May 25 2011 Dan Walsh 2.0.86-9 +- Fix var_spool template read_spool_files +- Fix sepolgen to handle filename transitions + +* Mon May 23 2011 Dan Walsh 2.0.86-8 +- Templates cleanedup by Dominic Grift + +* Fri Apr 29 2011 Dan Walsh 2.0.86-7 +- Clean up some of the templates for sepolgen + +* Fri Apr 22 2011 Dan Walsh 2.0.86-6 +- Apply patches from Christoph A. + * fix sandbox title + * stop xephyr from li +- Also ignore errors on sandbox include of directory missing files + +* Thu Apr 21 2011 Dan Walsh 2.0.86-5 +- rebuild versus latest libsepol + +* Mon Apr 18 2011 Dan Walsh 2.0.86-4 +- Change fixfiles restore to delete unlabeled sockets in /tmp + +* Mon Apr 18 2011 Dan Walsh 2.0.86-2 +- rebuild versus latest libsepol + +* Tue Apr 12 2011 Dan Walsh 2.0.86-1 +- Update to upstream + * Use correct color range in mcstrand by Richard Haines. + +* Mon Apr 11 2011 Dan Walsh 2.0.85-30 +- Add Elia Pinto patches to allow user to specify directories to ignore + +* Tue Apr 5 2011 Dan Walsh 2.0.85-29 +- Fix policycoreutils-sandbox description + +* Tue Mar 29 2011 Dan Walsh 2.0.85-28 +- rsynccmd should run outside of execcon + +* Thu Mar 24 2011 Dan Walsh 2.0.85-27 +- Fix semange node handling of ipv6 addresses + +* Wed Mar 23 2011 Dan Walsh 2.0.85-26 +- Fix sepolgen-ifgen call, add -p option + +* Wed Mar 23 2011 Dan Walsh 2.0.85-25 +- Fix sepolgen-ifgen call + +* Fri Mar 18 2011 Dan Walsh 2.0.85-24 +- Fix rsync command to work if the directory is old. +- Fix all tests + +* Wed Mar 16 2011 Dan Walsh 2.0.85-23 +- Fix sepolgen to generate network polcy using generic_if and genric_node versus all_if and all_node + +* Wed Mar 16 2011 Dan Walsh 2.0.85-22 +- Return to original seunshare man page + +* Fri Mar 11 2011 Dan Walsh 2.0.85-21 +- change default location of HOMEDIR in sandbox to /tmp/.sandbox_home_* +- This will allow default sandboxes to work on NFS homedirs without allowing + access to homedir data + +* Fri Mar 11 2011 Dan Walsh 2.0.85-20 +- Change sepolgen-ifgen to search all available policy files +- Exit in restorecond if it can not find a UID in the passwd database + +* Wed Mar 9 2011 Dan Walsh 2.0.85-19 +- Fix portspage in system-config-selinux to not crash +- More fixes for seunshare from Tomas Hoger + +* Tue Mar 8 2011 Dan Walsh 2.0.85-18 +- put back in old handling of -T in sandbox command +- Put back setsid in seunshare +- Fix rsync to maintain times + +* Tue Mar 8 2011 Dan Walsh 2.0.85-17 +- Use rewritten seunshare from thoger + +* Mon Mar 7 2011 Dan Walsh 2.0.85-16 +- Require python-IPy for policycoreutils-python package +- Fixes for sepologen + - Usage statement needs -n name + - Names with _ are being prevented + - dbus apps should get _chat interface + +* Thu Mar 3 2011 Dan Walsh 2.0.85-15 +- Fix error message in seunshare, check for tmpdir existance before unlink. + +* Fri Feb 25 2011 Dan Walsh 2.0.85-13 +- Rewrite seunshare to make sure /tmp is mounted stickybit owned by root +- Only allow names in polgengui that contain letters and numbers +- Fix up node handling in semanage command +- Update translations + +* Wed Feb 09 2011 Fedora Release Engineering - 2.0.85-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Thu Feb 3 2011 Dan Walsh 2.0.85-11 +- Fix sandbox policy creation with udp connect ports + +* Thu Feb 3 2011 Dan Walsh 2.0.85-10 +- Cleaup selinux-polgengui to be a little more modern, fix comments and use selected name +- Cleanup chcat man page + +* Wed Feb 2 2011 Dan Walsh 2.0.85-9 +- Report full errors on OSError on Sandbox + +* Fri Jan 21 2011 Dan Walsh 2.0.85-8 +- Fix newrole hanlding of pcap + +* Wed Jan 19 2011 Dan Walsh 2.0.85-7 +- Have restorecond watch more directories in homedir + +* Fri Jan 14 2011 Dan Walsh 2.0.85-6 +- Add sandbox to sepolgen + +* Thu Jan 6 2011 Dan Walsh 2.0.85-4 +- Fix proper handling of getopt errors +- Do not allow modules names to contain spaces + +* Wed Jan 5 2011 Dan Walsh 2.0.85-3 +- Polgengui raises the wrong type of exception. #471078 +- Change semanage to not allow it to semanage module -D +- Change setsebool to suggest run as root on failure + +* Wed Dec 22 2010 Dan Walsh 2.0.85-2 +- Fix restorecond watching utmp file for people logging in our out + +* Tue Dec 21 2010 Dan Walsh 2.0.85-1 +- Update to upstream + +* Thu Dec 16 2010 Dan Walsh 2.0.84-5 +- Change to allow sandbox to run on nfs homedirs, add start python script + +* Wed Dec 15 2010 Dan Walsh 2.0.84-4 +- Move seunshare to sandbox package + +* Mon Nov 29 2010 Dan Walsh 2.0.84-3 +- Fix sandbox to show correct types in usage statement + +* Mon Nov 29 2010 Dan Walsh 2.0.84-2 +- Stop fixfiles from complaining about missing dirs + +* Mon Nov 22 2010 Dan Walsh 2.0.84-1 +- Update to upstream +- List types available for sandbox in usage statement + +* Mon Nov 22 2010 Dan Walsh 2.0.83-37 +- Don't report error on load_policy when system is disabled. + +* Mon Nov 8 2010 Dan Walsh 2.0.83-36 +- Fix up problems pointed out by solar designer on dropping capabilities + +* Mon Nov 1 2010 Dan Walsh 2.0.83-35 +- Check if you have full privs and reset otherwise dont drop caps + +* Mon Nov 1 2010 Dan Walsh 2.0.83-34 +- Fix setools require line + +* Fri Oct 29 2010 Dan Walsh 2.0.83-33 +- Move /etc/pam.d/newrole in to polcicycoreutils-newrole +- Additional capability checking in sepolgen + +* Mon Oct 25 2010 Dan Walsh 2.0.83-32 +- Remove setuid flag and replace with file capabilities +- Fix sandbox handling of files with spaces in them + +* Wed Sep 29 2010 jkeating - 2.0.83-31 +- Rebuilt for gcc bug 634757 + +* Thu Sep 23 2010 Dan Walsh 2.0.83-30 +- Move restorecond into its own subpackage + +* Thu Sep 23 2010 Dan Walsh 2.0.83-29 +- Fix semanage man page + +* Mon Sep 13 2010 Dan Walsh 2.0.83-28 +- Add seremote, to allow the execution of command inside the sandbox from outside the sandbox. + +* Mon Sep 13 2010 Dan Walsh 2.0.83-27 +- Fix sandbox copyfile when copying a dir with a socket, print error + +* Fri Sep 10 2010 Dan Walsh 2.0.83-26 +- Stop polgengui from crashing if selinux policy is not installed + +* Thu Sep 9 2010 Dan Walsh 2.0.83-25 +- Fix bug preventing sandbox from using -l + +* Tue Sep 7 2010 Dan Walsh 2.0.83-24 +- Eliminate quotes fro desktop files + +* Mon Aug 30 2010 Dan Walsh 2.0.83-23 +- Add -w windowsize patch from Christoph A. + +* Mon Aug 30 2010 Dan Walsh 2.0.83-22 +- Update po + +* Wed Aug 25 2010 Dan Walsh 2.0.83-21 +- Update po + +* Tue Aug 24 2010 Dan Walsh 2.0.83-20 +- Tighten down seunshare to create /tmp dir with sticky bit and MS_NODEV | MS_NOSUID | MS_NOEXEC; +- Remove setsid on seunshare so ^c on sandbox will cause apps to exit +- Add dbus-launch --exit-with-session so all processes launched within the sandbox exit with the sandbox +- Clean up error handling so error will get sent back to sandbox tool + +* Mon Aug 23 2010 Dan Walsh 2.0.83-19 +- Fix translation handling in file context page of system-config-selinux + +* Fri Aug 13 2010 Dan Walsh 2.0.83-18 +- Fix sandbox error handling + +* Fri Aug 13 2010 Dan Walsh 2.0.83-17 +- Apply patch to restorecond from Chris Adams, which will cause restorecond +- to watch first user that logs in. + +* Thu Aug 12 2010 Dan Walsh 2.0.83-16 +- Add COPYING file to doc dir + +* Thu Aug 5 2010 Dan Walsh 2.0.83-15 +- Update po and translations +Resolves: #610473 + +* Thu Aug 5 2010 Dan Walsh 2.0.83-14 +- More fixes for polgen tools + +* Thu Aug 5 2010 Dan Walsh 2.0.83-13 +- Remove requirement to run selinux-polgen as root + +* Thu Aug 5 2010 Dan Walsh 2.0.83-12 +- Update po and translations +- Fix gui policy generation tools + +* Wed Aug 4 2010 Dan Walsh 2.0.83-11 +- Update po and translations + +* Sat Jul 31 2010 David Malcolm - 2.0.83-10 +- rebuild against python 2.7 + +* Wed Jul 28 2010 Dan Walsh 2.0.83-9 +- Update selinux-polgengui to sepolgen policy generation + +* Wed Jul 28 2010 Dan Walsh 2.0.83-8 +- Fix invalid free in seunshare and fix man page + +* Tue Jul 27 2010 Dan Walsh 2.0.83-7 +- Update translations + +* Mon Jul 26 2010 Dan Walsh 2.0.83-6 +- Fix sandbox man page + +* Wed Jul 21 2010 David Malcolm - 2.0.83-5 +- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild + +* Tue Jul 20 2010 Dan Walsh 2.0.83-4 +- Add translations for menus +- Fixup man page from Russell Coker + +* Tue Jun 15 2010 Dan Walsh 2.0.83-3 +- Change python scripts to use -s flag +- Update po + +* Tue Jun 15 2010 Dan Walsh 2.0.83-1 +- Update to upstream + * Add sandbox support from Dan Walsh with modifications from Steve Lawrence. + +* Tue Jun 15 2010 Dan Walsh 2.0.82-31 +- Fix sepolgen code generation +Resolve: #603001 + +* Tue Jun 8 2010 Dan Walsh 2.0.82-30 +- Add cgroup support for sandbox + +* Mon Jun 7 2010 Dan Walsh 2.0.82-29 +- Allow creation of /var/cache/DOMAIN from sepolgen + +* Thu Jun 3 2010 Dan Walsh 2.0.82-28 +- Fix sandbox init script +- Add dbus-launch to sandbox -X +Resolve: #599599 + +* Thu Jun 3 2010 Dan Walsh 2.0.82-27 +- Move genhomedircon.8 to same package as genhomedircon +- Fix sandbox to pass unit test +Resolves: #595796 + +* Wed Jun 2 2010 Dan Walsh 2.0.82-26 +- Fix listing of booleans from audit2allow + +* Wed Jun 2 2010 Dan Walsh 2.0.82-25 +- Fix audit2allow to output if the current policy has avc +- Update translations +- Fix icon + +* Thu May 27 2010 Dan Walsh 2.0.82-24 +- Man page fixes +- sandbox fixes +- Move seunshare to base package + +* Fri May 21 2010 Dan Walsh 2.0.82-23 +- Fix seunshare translations +- Fix seunshare to work on all arches +- Fix icon for system-config-selinux +Resolves: #595276 + +* Fri May 21 2010 Dan Walsh 2.0.82-22 +- Fix can_exec definition in sepolgen + +* Fri May 21 2010 Dan Walsh 2.0.82-21 +- Add man page for seunshare and genhomedircon +Resolves: #594303 +- Fix node management via semanage + +* Wed May 19 2010 Dan Walsh 2.0.82-20 +- Fixes from upstream for sandbox command +Resolves: #580938 + +* Thu May 13 2010 Dan Walsh 2.0.82-18 +- Fix sandbox error handling on copyfile +- Fix desktop files + +* Tue May 11 2010 Dan Walsh 2.0.82-17 +- Fix policy tool to have correct name in menus +- Fix seunshare to handle /tmp being in ~/home +- Fix saving of altered files +- Update translations + +* Tue May 4 2010 Dan Walsh 2.0.82-15 +- Allow audit2allow to specify alternative policy file for analysis + +* Mon May 3 2010 Dan Walsh 2.0.82-14 +- Update po +- Fix sepolgen --no_attrs +Resolves: #588280 + +* Thu Apr 29 2010 Dan Walsh 2.0.82-13 +- Make semanage boolean work on disabled machines and during livecd xguest +- Fix homedir and tmpdir handling in sandbox +Resolves: #587263 + +* Wed Apr 28 2010 Dan Walsh 2.0.82-11 +- Make semanage boolean work on disabled machines + +* Tue Apr 27 2010 Dan Walsh 2.0.82-10 +- Make sepolgen-ifgen be quiet + +* Wed Apr 21 2010 Dan Walsh 2.0.82-8 +- Make sepolgen report on more interfaces +- Fix system-config-selinux display of modules + +* Thu Apr 15 2010 Dan Walsh 2.0.82-7 +- Fix crash when args are empty +Resolves: #582542 +- Fix semange to exit on bad options +- Fix semanage dontaudit man page section +Resolves: #582533 + +* Wed Apr 14 2010 Dan Walsh 2.0.82-6 +- Remove debug line from semanage +- Update po + +* Tue Apr 13 2010 Dan Walsh 2.0.82-5 +- Fix sandbox comment on HOMEDIRS +- Fix sandbox to throw error on bad executable + +* Tue Apr 6 2010 Dan Walsh 2.0.82-4 +- Fix spacing in templates + +* Wed Mar 31 2010 Dan Walsh 2.0.82-3 +- Fix semanage return codes + +* Tue Mar 30 2010 Dan Walsh 2.0.82-2 +- Fix sepolgen to confirm to the "Reference Policy Style Guide" + +* Tue Mar 23 2010 Dan Walsh 2.0.82-1 +- Update to upstream + * Add avc's since boot from Dan Walsh. + * Fix unit tests from Dan Walsh. + +* Tue Mar 23 2010 Dan Walsh 2.0.81-4 +- Update to upstream - sepolgen + * Add since-last-boot option to audit2allow from Dan Walsh. + * Fix sepolgen output to match what Chris expects for upstream + refpolicy from Dan Walsh. + +* Mon Mar 22 2010 Dan Walsh 2.0.81-3 +- Allow restorecon on > 2 Gig files + +* Tue Mar 16 2010 Dan Walsh 2.0.81-2 +- Fix semanage handling of boolean options +- Update translations + +* Fri Mar 12 2010 Dan Walsh 2.0.81-1 +- Update to upstream + * Add dontaudit flag to audit2allow from Dan Walsh. + +* Thu Mar 11 2010 Dan Walsh 2.0.80-2 +- Use --rbind in sandbox init scripts + +* Mon Mar 8 2010 Dan Walsh 2.0.80-1 +- Update to upstream + * Module enable/disable support from Dan Walsh. + +* Mon Mar 1 2010 Dan Walsh 2.0.79-5 +- Rewrite of sandbox script, add unit test for sandbox +- Update translations + +* Mon Mar 1 2010 Dan Walsh 2.0.79-4 +- Fix patch for dontaudit rules from audit2allow for upstream acceptance + +* Fri Feb 26 2010 Dan Walsh 2.0.79-3 +- Fixes for fixfiles + +* Wed Feb 17 2010 Dan Walsh 2.0.79-2 +- Fix sandbox to complain if mount-shared has not been run +- Fix to use /etc/sysconfig/sandbox + +* Tue Feb 16 2010 Dan Walsh 2.0.79-1 +- Update to upstream + * Fix double-free in newrole +- Fix python language handling + +* Thu Feb 11 2010 Dan Walsh 2.0.78-21 +- Fix display of command in sandbox + +* Fri Feb 5 2010 Dan Walsh 2.0.78-20 +- Catch OSError in semanage + +* Wed Feb 3 2010 Dan Walsh 2.0.78-19 +- Fix seobject and fixfiles + +* Fri Jan 29 2010 Dan Walsh 2.0.78-17 +- Change seobject to use translations properly + +* Thu Jan 28 2010 Dan Walsh 2.0.78-16 +- Cleanup spec file +Resolves: 555835 + +* Thu Jan 28 2010 Dan Walsh 2.0.78-15 +- Add use_resolve to sepolgen + +* Wed Jan 27 2010 Dan Walsh 2.0.78-14 +- Add session capability to sandbox +- sandbox -SX -H ~/.homedir -t unconfined_t -l s0:c15 /etc/gdm/Xsession + +* Thu Jan 21 2010 Dan Walsh 2.0.78-13 +- Fix executable template for fifo files + +* Tue Jan 19 2010 Dan Walsh 2.0.78-12 +- Fix patch xod xmodmap +- Exit 0 from script + +* Thu Jan 14 2010 Dan Walsh 2.0.78-11 +- Run with the same xdmodmap in sandbox as outside +- Patch from Josh Cogliati + +* Fri Jan 8 2010 Dan Walsh 2.0.78-10 +- Fix sepolgen to not generate user sh section on non user policy + +* Fri Jan 8 2010 Dan Walsh 2.0.78-9 +- Add -e to semanage man page +- Add -D qualifier to audit2allow to generate dontaudit rules + +* Wed Jan 6 2010 Dan Walsh 2.0.78-8 +- Speed up audit2allow processing of audit2why comments + +* Fri Dec 18 2009 Dan Walsh 2.0.78-7 +- Fixes to sandbox man page + +* Thu Dec 17 2009 Dan Walsh 2.0.78-6 +- Add setools-libs-python to requires for gui + +* Wed Dec 16 2009 Dan Walsh 2.0.78-5 +- If restorecond running as a user has no files to watch then it should exit. (NFS Homedirs) + +* Thu Dec 10 2009 Dan Walsh 2.0.78-4 +- Move sandbox man page to base package + +* Tue Dec 8 2009 Dan Walsh 2.0.78-3 +- Fix audit2allow to report constraints, dontaudits, types, booleans + +* Fri Dec 4 2009 Dan Walsh 2.0.78-2 +- Fix restorecon -i to ignore enoent + +* Tue Dec 1 2009 Dan Walsh 2.0.78-1 +- Update to upstream + * Remove non-working OUTFILE from fixfiles from Dan Walsh. + * Additional exception handling in chcat from Dan Walsh. + + * fix sepolgen to read a "type 1403" msg as a policy load by Stephen + Smalley + * Add support for Xen ocontexts from Paul Nuzzi. + +* Tue Nov 24 2009 Dan Walsh 2.0.77-1 +- Update to upstream + * Fixed bug preventing semanage node -a from working + from Chad Sellers + * Fixed bug preventing semanage fcontext -l from working + from Chad Sellers +- Change semanage to use unicode + +* Wed Nov 18 2009 Dan Walsh 2.0.76-1 +- Update to upstream + * Remove setrans management from semanage, as it does not work + from Dan Walsh. + * Move load_policy from /usr/sbin to /sbin from Dan Walsh. + +* Mon Nov 16 2009 Dan Walsh 2.0.75-3 +- Raise exception if user tries to add file context with an embedded space + +* Wed Nov 11 2009 Dan Walsh 2.0.75-2 +- Fix sandbox to setsid so it can run under mozilla without crashing the session + +* Mon Nov 2 2009 Dan Walsh 2.0.75-1 +- Update to upstream + * Factor out restoring logic from setfiles.c into restore.c + +* Fri Oct 30 2009 Dan Walsh 2.0.74-15 +- Fix typo in seobject.py + +* Fri Oct 30 2009 Dan Walsh 2.0.74-14 +- Allow semanage -i and semanage -o to generate customization files. +- semanage -o will generate a customization file that semanage -i can read and set a machines to the same selinux configuration + +* Tue Oct 20 2009 Dan Walsh 2.0.74-13 +- Fix restorecond man page + +* Mon Oct 19 2009 Dan Walsh 2.0.74-12 +- Add generation of the users context file to polgengui + +* Fri Oct 16 2009 Dan Walsh 2.0.74-11 +- Remove tabs from system-config-selinux glade file + +* Thu Oct 15 2009 Dan Walsh 2.0.74-10 +- Remove translations screen from system-config-selinux + +* Wed Oct 14 2009 Dan Walsh 2.0.74-9 +- Move fixfiles man pages into the correct package +- Add genhomedircon to fixfiles restore + +* Tue Oct 6 2009 Dan Walsh 2.0.74-8 +- Add check to sandbox to verify save changes - Chris Pardy +- Fix memory leak in restorecond - Steve Grubb + +* Thu Oct 1 2009 Dan Walsh 2.0.74-7 +- Fixes Templates + +* Thu Oct 1 2009 Dan Walsh 2.0.74-6 +- Fixes for polgengui to handle tcp ports correctly +- Fix semanage node -a + +* Wed Sep 30 2009 Dan Walsh 2.0.74-5 +- Fixes for semanage -equiv, readded modules, --enable, --disable + +* Sun Sep 20 2009 Dan Walsh 2.0.74-4 +- Close sandbox when eclipse exits + +* Fri Sep 18 2009 Dan Walsh 2.0.74-3 +- Security fixes for seunshare +- Fix Sandbox to handle non file input to command. + +* Thu Sep 17 2009 Dan Walsh 2.0.74-2 +- Security fixes for seunshare + +* Thu Sep 17 2009 Dan Walsh 2.0.74-1 +- Update to upstream + * Change semodule upgrade behavior to install even if the module + is not present from Dan Walsh. + * Make setfiles label if selinux is disabled and a seclabel aware + kernel is running from Caleb Case. + * Clarify forkpty() error message in run_init from Manoj Srivastava. + +* Mon Sep 14 2009 Dan Walsh 2.0.73-5 +- Fix sandbox to handle relative paths + +* Mon Sep 14 2009 Dan Walsh 2.0.73-4 +- Add symbolic link to load_policy + +* Mon Sep 14 2009 Dan Walsh 2.0.73-3 +- Fix restorecond script to use force-reload + +* Tue Sep 8 2009 Dan Walsh 2.0.73-2 +- Fix init script to show status in usage message + +* Tue Sep 8 2009 Dan Walsh 2.0.73-1 +- Update to upstream + * Add semanage dontaudit to turn off dontaudits from Dan Walsh. + * Fix semanage to set correct mode for setrans file from Dan Walsh. + * Fix malformed dictionary in portRecord from Dan Walsh. + * Restore symlink handling support to restorecon based on a patch by + Martin Orr. This fixes the restorecon /dev/stdin performed by Debian + udev scripts that was broken by policycoreutils 2.0.70. + +* Thu Sep 3 2009 Dan Walsh 2.0.71-15 +- Add DAC_OVERRIED to seunshare + +* Wed Sep 2 2009 Bill Nottingham 2.0.71-15 +- Fix typo + +* Fri Aug 28 2009 Dan Walsh 2.0.71-14 +- Add enable/disable patch + +* Thu Aug 27 2009 Tomas Mraz - 2.0.71-13 +- rebuilt with new audit + +* Wed Aug 26 2009 Dan Walsh 2.0.71-12 +- Tighten up controls on seunshare.c + +* Wed Aug 26 2009 Dan Walsh 2.0.71-11 +- Add sandboxX + +* Sat Aug 22 2009 Dan Walsh 2.0.71-10 +- Fix realpath usage to only happen on argv input from user + +* Fri Aug 21 2009 Ville Skyttä - 2.0.71-9 +- Don't try to remove restorecond after last erase (done already in %%preun). +- Ensure scriptlets exit with status 0. +- Fix %%post and %%pr + +* Thu Aug 20 2009 Dan Walsh 2.0.71-7 +- Fix glob handling of /.. + +* Wed Aug 19 2009 Dan Walsh 2.0.71-6 +- Redesign restorecond to use setfiles/restore functionality + +* Wed Aug 19 2009 Dan Walsh 2.0.71-5 +- Fix sepolgen again + +* Tue Aug 18 2009 Dan Walsh 2.0.71-4 +- Add --boot flag to audit2allow to get all AVC messages since last boot + +* Tue Aug 18 2009 Dan Walsh 2.0.71-3 +- Fix semanage command + +* Thu Aug 13 2009 Dan Walsh 2.0.71-2 +- exclude unconfined.if from sepolgen + +* Thu Aug 13 2009 Dan Walsh 2.0.71-1 +- Fix chcat to report error on non existing file +- Update to upstream + * Modify setfiles/restorecon checking of exclude paths. Only check + user-supplied exclude paths (not automatically generated ones based on + lack of seclabel support), don't require them to be directories, and + ignore permission denied errors on them (it is ok to exclude a path to + which the caller lacks permission). + +* Mon Aug 10 2009 Dan Walsh 2.0.70-2 +- Don't warn if the user did not specify the exclude if root can not stat file system + +* Wed Aug 5 2009 Dan Walsh 2.0.70-1 +- Update to upstream + * Modify restorecon to only call realpath() on user-supplied pathnames + from Stephen Smalley. + * Fix typo in fixfiles that prevented it from relabeling btrfs + filesystems from Dan Walsh. + +* Wed Jul 29 2009 Dan Walsh 2.0.68-1 +- Fix location of man pages +- Update to upstream + * Modify setfiles to exclude mounts without seclabel option in + /proc/mounts on kernels >= 2.6.30 from Thomas Liu. + * Re-enable disable_dontaudit rules upon semodule -B from Christopher + Pardy and Dan Walsh. + * setfiles converted to fts from Thomas Liu. + +* Sun Jul 26 2009 Fedora Release Engineering - 2.0.64-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Tue Jul 7 2009 Tom "spot" Callaway 2.0.64-2 +- fix multiple directory ownership of mandirs + +* Fri Jun 26 2009 Dan Walsh 2.0.64-1 +- Update to upstream + * Keep setfiles from spamming console from Dan Walsh. + * Fix chcat's category expansion for users from Dan Walsh. +- Update po files +- Fix sepolgen + +* Thu Jun 4 2009 Dan Walsh 2.0.63-5 +- Add sepolgen executable + +* Mon Jun 1 2009 Dan Walsh 2.0.63-4 +- Fix Sandbox option handling +- Fix fixfiles handling of btrfs + +* Tue May 26 2009 Dan Walsh 2.0.63-3 +- Fix sandbox to be able to execute files in homedir + +* Fri May 22 2009 Dan Walsh 2.0.63-2 +- Change polgen.py to be able to generate policy + +* Wed May 20 2009 Dan Walsh 2.0.63-1 +- Update to upstream + * Fix transaction checking from Dan Walsh. + * Make fixfiles -R (for rpm) recursive. + * Make semanage permissive clean up after itself from Dan Walsh. + * add /root/.ssh/* to restorecond.conf + +* Wed Apr 22 2009 Dan Walsh 2.0.62-14 +- Fix audit2allow -a to retun /var/log/messages + +* Wed Apr 22 2009 Dan Walsh 2.0.62-13 +- Run restorecond as a user service + +* Thu Apr 16 2009 Dan Walsh 2.0.62-12 +- Add semanage module support + +* Tue Apr 14 2009 Dan Walsh 2.0.62-10 +- Do not print \n, if count < 1000; + +* Sat Apr 11 2009 Dan Walsh 2.0.62-9 +- Handle case where subs file does not exist + +* Wed Apr 8 2009 Dan Walsh 2.0.62-8 +- Update po files +- Add --equiv command for semanage + +* Tue Mar 31 2009 Dan Walsh 2.0.62-7 +- Cleanup creation of permissive domains +- Update po files + +* Mon Mar 23 2009 Dan Walsh 2.0.62-6 +- Update po files + +* Thu Mar 12 2009 Dan Walsh 2.0.62-5 +- Fix semanage transations + +* Sat Mar 7 2009 Dan Walsh 2.0.62-4 +- Update polgengui templates to match current upstream policy + +* Thu Feb 26 2009 Fedora Release Engineering - 2.0.62-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Mon Feb 23 2009 Dan Walsh 2.0.62-2 +- Add /root/.ssh to restorecond.conf +- fixfiles -R package should recursively fix files + +* Wed Feb 18 2009 Dan Walsh 2.0.62-1 +- Update to upstream + * Add btrfs to fixfiles from Dan Walsh. + * Remove restorecond error for matching globs with multiple hard links + and fix some error messages from Dan Walsh. + * Make removing a non-existant module a warning rather than an error + from Dan Walsh. + * Man page fixes from Dan Walsh. + +* Mon Feb 16 2009 Dan Walsh 2.0.61-10 +- Fix script created by polgengui to not refer to selinux-policy-devel + +* Mon Feb 9 2009 Dan Walsh 2.0.61-9 +- Change initc scripts to use proper labeling on gui + +* Mon Feb 9 2009 Dan Walsh 2.0.61-8 +- Add obsoletes to cause policycoreuils to update both python and non python version + +* Fri Jan 30 2009 Dan Walsh 2.0.61-7 +- Dont report errors on glob match and multiple links + +* Thu Jan 22 2009 Dan Walsh 2.0.61-6 +- Move sepolgen-ifgen to post python + +* Wed Jan 21 2009 Dan Walsh 2.0.61-4 +- Fix Translations + +* Tue Jan 20 2009 Dan Walsh 2.0.61-3 +- Add Domains Page to system-config-selinux +- Add ability to create dbus confined applications to polgen + +* Wed Jan 14 2009 Dan Walsh 2.0.61-2 +- Split python into a separate package + +* Tue Jan 13 2009 Dan Walsh 2.0.61-1 +- Update to upstream + * chcat: cut categories at arbitrary point (25) from Dan Walsh + * semodule: use new interfaces in libsemanage for compressed files + from Dan Walsh + * audit2allow: string changes for usage + +* Tue Jan 6 2009 Dan Walsh 2.0.60-7 +- Don't error out when removing a non existing module + +* Mon Dec 15 2008 Dan Walsh 2.0.60-6 +- fix audit2allow man page + +* Wed Dec 10 2008 Dan Walsh 2.0.60-5 +- Fix Japanese translations + +* Sat Dec 6 2008 Dan Walsh 2.0.60-4 +- Change md5 to hashlib.md5 in sepolgen + +* Thu Dec 04 2008 Ignacio Vazquez-Abrams - 2.0.60-3 +- Rebuild for Python 2.6 + +* Tue Dec 2 2008 Dan Walsh 2.0.60-2 +- Fix error checking in restorecond, for inotify_add_watch + +* Mon Dec 1 2008 Dan Walsh 2.0.60-1 +- Update to upstream + * semanage: use semanage_mls_enabled() from Stephen Smalley. + +* Sat Nov 29 2008 Ignacio Vazquez-Abrams - 2.0.59-2 +- Rebuild for Python 2.6 + +* Tue Nov 11 2008 Dan Walsh 2.0.59-1 +- Update to upstream + * fcontext add checked local records twice, fix from Dan Walsh. + +* Mon Nov 10 2008 Dan Walsh 2.0.58-1 +- Update to upstream + * Allow local file context entries to override policy entries in + semanage from Dan Walsh. + * Newrole error message corrections from Dan Walsh. + * Add exception to audit2why call in audit2allow from Dan Walsh. + +* Fri Nov 7 2008 Dan Walsh 2.0.57-12 +- add compression + +* Tue Nov 04 2008 Jesse Keating - 2.0.57-11 +- Move the usermode-gtk requires to the -gui subpackage. + +* Thu Oct 30 2008 Dan Walsh 2.0.57-10 +- Fix traceback in audit2why + +* Wed Oct 29 2008 Dan Walsh 2.0.57-9 +- Make GUI use translations + +* Wed Oct 29 2008 Dan Walsh 2.0.57-8 +- Fix typo in man page + +* Tue Oct 28 2008 Dan Walsh 2.0.57-7 +- Handle selinux disabled correctly +- Handle manipulation of fcontext file correctly + +* Mon Oct 27 2008 Dan Walsh 2.0.57-6 +- Add usermode-gtk requires + +* Thu Oct 23 2008 Dan Walsh 2.0.57-5 +- Allow addition of local modifications of fcontext policy. + +* Mon Oct 20 2008 Dan Walsh 2.0.57-4 +- Fix system-config-selinux booleanspage throwing and exception +- Update po files + +* Fri Oct 17 2008 Dan Walsh 2.0.57-3 +- Fix text in newrole +- Fix revertbutton on booleans page in system-config-selinux + +* Wed Oct 1 2008 Dan Walsh 2.0.57-2 +- Change semodule calls for libsemanage + +* Wed Oct 1 2008 Dan Walsh 2.0.57-1 +- Update to upstream + * Update po files from Dan Walsh. + +* Fri Sep 12 2008 Dan Walsh 2.0.56-1 +- Fix semanage help display +- Update to upstream + * fixfiles will now remove all files in /tmp and will check for + unlabeled_t in /tmp and /var/tmp from Dan Walsh. + * add glob support to restorecond from Dan Walsh. + * allow semanage to handle multi-line commands in a single transaction + from Dan Walsh. + +* Thu Sep 11 2008 Dan Walsh 2.0.55-8 +- Only call gen_requires once in sepolgen + +* Tue Sep 9 2008 Dan Walsh 2.0.55-7 +- Change Requires line to gnome-python2-gnome +- Fix spelling mistakes +- Require libselinux-utils + +* Mon Sep 8 2008 Dan Walsh 2.0.55-5 +- Add node support to semanage + +* Mon Sep 8 2008 Dan Walsh 2.0.55-4 +- Fix fixfiles to correct unlabeled_t files and remove .? files + +* Wed Sep 3 2008 Dan Walsh 2.0.55-2 +- Add glob support to restorecond so it can check every file in the homedir + +* Thu Aug 28 2008 Dan Walsh 2.0.55-1 +- Update to upstream + * Merged semanage node support from Christian Kuester. + +* Fri Aug 15 2008 Dan Walsh 2.0.54-7 +- Add require libsemanage-python + +* Mon Aug 11 2008 Dan Walsh 2.0.54-6 +- Add missing html_util.py file + +* Thu Aug 7 2008 Dan Walsh 2.0.54-5 +- Fixes for multiple transactions + +* Wed Aug 6 2008 Dan Walsh 2.0.54-2 +- Allow multiple transactions in one semanage command + +* Tue Aug 5 2008 Dan Walsh 2.0.54-1 +- Update to upstream + * Add support for boolean files and group support for seusers from Dan Walsh. + * Ensure that setfiles -p output is newline terminated from Russell Coker. + +* Fri Aug 1 2008 Dan Walsh 2.0.53-3 +- Allow semanage user to add group lists % groupname + +* Tue Jul 29 2008 Dan Walsh 2.0.53-2 +- Fix help + +* Tue Jul 29 2008 Dan Walsh 2.0.53-1 +- Update to upstream + * Change setfiles to validate all file_contexts files when using -c from Stephen Smalley. + +* Tue Jul 29 2008 Dan Walsh 2.0.52-6 +- Fix boolean handling +- Upgrade to latest sepolgen +- Update po patch + +* Wed Jul 9 2008 Dan Walsh 2.0.52-5 +- Additial cleanup of boolean handling for semanage + +* Tue Jul 8 2008 Dan Walsh 2.0.52-4 +- Handle ranges of ports in gui + +* Tue Jul 8 2008 Dan Walsh 2.0.52-3 +- Fix indent problems in seobject + +* Wed Jul 2 2008 Dan Walsh 2.0.52-2 +- Add lockdown wizard +- Allow semanage booleans to take an input file an process lots of booleans at once. + +* Wed Jul 2 2008 Dan Walsh 2.0.52-1 +- Default prefix to "user" + +* Tue Jul 1 2008 Dan Walsh 2.0.50-2 +- Remove semodule use within semanage +- Fix launching of polgengui from toolbar + +* Mon Jun 30 2008 Dan Walsh 2.0.50-1 +- Update to upstream + * Fix audit2allow generation of role-type rules from Karl MacMillan. + +* Tue Jun 24 2008 Dan Walsh 2.0.49-10 +- Fix spelling of enforcement + +* Mon Jun 23 2008 Dan Walsh 2.0.49-8 +- Fix sepolgen/audit2allow handling of roles + +* Mon Jun 16 2008 Dan Walsh 2.0.49-7 +- Fix sepolgen-ifgen processing + +* Thu Jun 12 2008 Dan Walsh 2.0.49-6 +- Add deleteall to semanage permissive, cleanup error handling + +* Thu Jun 12 2008 Dan Walsh 2.0.49-5 +- Complete removal of rhpl requirement + +* Wed Jun 11 2008 Dan Walsh 2.0.49-4 +- Add semanage permissive * + +* Fri May 16 2008 Dan Walsh 2.0.49-3 +- Fix fixfiles to cleanup /tmp and /var/tmp + +* Fri May 16 2008 Dan Walsh 2.0.49-2 +- Fix listing of types in gui + +* Mon May 12 2008 Dan Walsh 2.0.49-1 +- Update to upstream + * Remove security_check_context calls for prefix validation from semanage. + * Change setfiles and restorecon to not relabel if the file already has the correct context value even if -F/force is specified. + +* Mon May 12 2008 Dan Walsh 2.0.47-3 +- Remove /usr/share/locale/sr@Latn/LC_MESSAGES/policycoreutils.mo + +* Wed May 7 2008 Dan Walsh 2.0.47-2 +- Add rm -rf /tmp/gconfd-* /tmp/pulse-* /tmp/orbit-* to fixfiles restore +- So that mislabeled files will get removed on full relabel + +* Wed May 7 2008 Dan Walsh 2.0.47-1 +- Make restorecond not start by default +- Fix polgengui to allow defining of confined roles. +- Add patches from Lubomir Rintel + * Add necessary runtime dependencies on setools-console for -gui + * separate stderr when run seinfo commands +- Update to upstream + * Update semanage man page for booleans from Dan Walsh. + * Add further error checking to seobject.py for setting booleans. + +* Fri Apr 18 2008 Matthias Clasen - 2.0.46-5 +- Uninvasive (ie no string or widget changes) HIG approximations + in selinux-polgenui + +* Fri Apr 18 2008 Matthias Clasen - 2.0.46-4 +- Move s-c-selinux to the right menu + +* Sun Apr 6 2008 Dan Walsh 2.0.46-3 +- Fix boolean descriptions +- Fix semanage man page + +* Wed Mar 19 2008 Dan Walsh 2.0.46-2 +- Don't use prefix in gui + +* Tue Mar 18 2008 Dan Walsh 2.0.46-1 +- Update to upstream + * Update audit2allow to report dontaudit cases from Dan Walsh. + * Fix semanage port to use --proto from Caleb Case. + +* Fri Feb 22 2008 Dan Walsh 2.0.44-1 +- Update to upstream + * Fix for segfault when conf file parse error occurs. + +* Wed Feb 13 2008 Dan Walsh 2.0.43-2 +- Don't show tabs on polgengui + +* Wed Feb 13 2008 Dan Walsh 2.0.43-1 +- Update to upstream + * Merged fix fixfiles option processing from Vaclav Ovsik. +- Added existing users, staff and user_t users to polgengui + +* Fri Feb 8 2008 Dan Walsh 2.0.42-3 +- Add messages for audit2allow DONTAUDIT + +* Tue Feb 5 2008 Dan Walsh 2.0.42-2 +- Add ability to transition to roles via polgengui + +* Sat Feb 2 2008 Dan Walsh 2.0.42-1 +- Update to upstream + * Make semodule_expand use sepol_set_expand_consume_base to reduce + peak memory usage. + +* Tue Jan 29 2008 Dan Walsh 2.0.41-1 +- Update to upstream + * Merged audit2why fix and semanage boolean --on/--off/-1/-0 support from Dan Walsh. + * Merged a second fixfiles -C fix from Marshall Miller. + + +* Thu Jan 24 2008 Dan Walsh 2.0.39-1 +- Don't initialize audit2allow for audit2why call. Use default +- Update to upstream + * Merged fixfiles -C fix from Marshall Miller. + +* Thu Jan 24 2008 Dan Walsh 2.0.38-1 +- Update to upstream + * Merged audit2allow cleanups and boolean descriptions from Dan Walsh. + * Merged setfiles -0 support by Benny Amorsen via Dan Walsh. + * Merged fixfiles fixes and support for ext4 and gfs2 from Dan Walsh. + +* Wed Jan 23 2008 Dan Walsh 2.0.37-1 +- Update to upstream + * Merged replacement for audit2why from Dan Walsh. + +* Wed Jan 23 2008 Dan Walsh 2.0.36-2 +- Cleanup fixfiles -f message in man page + +* Wed Jan 23 2008 Dan Walsh 2.0.36-1 +- Update to upstream + * Merged update to chcat, fixfiles, and semanage scripts from Dan Walsh. + * Merged sepolgen fixes from Dan Walsh. + +* Tue Jan 22 2008 Dan Walsh 2.0.35-5 +- handle files with spaces on upgrades + +* Tue Jan 22 2008 Dan Walsh 2.0.35-4 +- Add support in fixfiles for ext4 ext4dev and gfs2 + +* Mon Jan 21 2008 Dan Walsh 2.0.35-3 +- Allow files with spaces to be used by setfiles + +* Tue Jan 15 2008 Dan Walsh 2.0.35-2 +- Add descriptions of booleans to audit2allow + +* Fri Jan 11 2008 Dan Walsh 2.0.35-1 +- Update to upstream + * Merged support for non-interactive newrole command invocation from Tim Reed. + +* Thu Jan 10 2008 Dan Walsh 2.0.34-8 +- Change to use selinux bindings to audit2why + +* Tue Jan 8 2008 Dan Walsh 2.0.34-7 +- Fix fixfiles to handle no args + +* Mon Dec 31 2007 Dan Walsh 2.0.34-5 +- Fix roles output when creating a module + +* Mon Dec 31 2007 Dan Walsh 2.0.34-4 +- Handle files with spaces in fixfiles + +* Fri Dec 21 2007 Dan Walsh 2.0.34-3 +- Catch SELINUX_ERR with audit2allow and generate policy + +* Thu Dec 20 2007 Dan Walsh 2.0.34-2 +- Make sepolgen set error exit code when partial failure +- audit2why now checks booleans for avc diagnosis + +* Wed Dec 19 2007 Dan Walsh 2.0.34-1 +- Update to upstream + * Update Makefile to not build restorecond if + /usr/include/sys/inotify.h is not present + +* Wed Dec 19 2007 Dan Walsh 2.0.33-4 +- Fix sepolgen to be able to parse Fedora 9 policy + Handle ifelse statements + Handle refpolicywarn inside of define + Add init.if and inetd.if into parse + Add parse_file to syntax error message + +* Fri Dec 14 2007 Dan Walsh 2.0.33-3 +- Add scroll bar to fcontext gui page + +* Tue Dec 11 2007 Dan Walsh 2.0.33-2 +- Add Russion Man pages + +* Mon Dec 10 2007 Dan Walsh 2.0.33-1 +- Upgrade from NSA + * Drop verbose output on fixfiles -C from Dan Walsh. + * Fix argument handling in fixfiles from Dan Walsh. + * Enhance boolean support in semanage, including using the .xml description when available, from Dan Walsh. +- Fix handling of final screen in polgengui + +* Sun Dec 2 2007 Dan Walsh 2.0.32-2 +- Fix handling of disable selinux button in gui + +* Mon Nov 19 2007 Dan Walsh 2.0.32-1 +- Upgrade from NSA + * load_policy initial load option from Chad Sellers. + +* Mon Nov 19 2007 Dan Walsh 2.0.31-20 +- Don't show error on missing policy.xml + +* Mon Nov 19 2007 Dan Walsh 2.0.31-19 +- GUI Enhancements + - Fix cgi generation + - Use more patterns + +* Mon Nov 19 2007 Dan Walsh 2.0.31-18 +- Remove codec hacking, which seems to be fixed in python + +* Fri Nov 16 2007 Dan Walsh 2.0.31-17 +- Fix typo +- Change to upstream minimal privledge interfaces + +* Fri Nov 16 2007 Dan Walsh 2.0.31-16 +- Fix fixfiles argument parsing + +* Thu Nov 15 2007 Dan Walsh 2.0.31-15 +- Fix File Labeling add + +* Thu Nov 8 2007 Dan Walsh 2.0.31-14 +- Fix semanage to handle state where policy.xml is not installed + +* Mon Nov 5 2007 Dan Walsh 2.0.31-13 +- Remove -v from restorecon in fixfiles + +* Mon Nov 5 2007 Dan Walsh 2.0.31-12 +- Fix filter and search capabilities, add wait cursor + +* Fri Nov 2 2007 Dan Walsh 2.0.31-11 +- Translate booleans via policy.xml +- Allow booleans to be set via semanage + +* Thu Nov 1 2007 Dan Walsh 2.0.31-10 +- Require use of selinux-policy-devel + +* Wed Oct 31 2007 Dan Walsh 2.0.31-9 +- Validate semanage fcontext input +- Fix template names for log files in gui + +* Fri Oct 19 2007 Dan Walsh 2.0.31-8 +- Fix template to generate correct content + +* Fri Oct 19 2007 Dan Walsh 2.0.31-7 +- Fix consolekit link to selinux-polgengui + +* Thu Oct 18 2007 Dan Walsh 2.0.31-6 +- Fix the generation templates + +* Tue Oct 16 2007 Dan Walsh 2.0.31-5 +- Fix enable/disable audit messages + +* Mon Oct 15 2007 Dan Walsh 2.0.31-4 +- Add booleans page + +* Mon Oct 15 2007 Dan Walsh 2.0.31-3 +- Lots of updates to gui + +* Mon Oct 15 2007 Dan Walsh 2.0.31-1 +- Remove no.po +- Update to upstream + * Fix semodule option handling from Dan Walsh. + * Add deleteall support for ports and fcontexts in semanage from Dan Walsh. + +* Thu Oct 11 2007 Dan Walsh 2.0.29-2 +- Fix semodule parameter checking + +* Sun Oct 7 2007 Dan Walsh 2.0.29-1 +- Update to upstream + * Add genhomedircon script to invoke semodule -Bn from Dan Walsh. +- Add deleteall for ports and fcontext + +* Fri Oct 5 2007 Dan Walsh 2.0.28-1 +- Update to upstream + * Update semodule man page for -D from Dan Walsh. + * Add boolean, locallist, deleteall, and store support to semanage from Dan Walsh. + +* Tue Oct 2 2007 Dan Walsh 2.0.27-7 +- Add genhomedircon script to rebuild file_context for shadow-utils + +* Tue Oct 2 2007 Dan Walsh 2.0.27-6 +- Update translations + +* Tue Oct 2 2007 Dan Walsh 2.0.27-5 +- Additional checkboxes for application policy + +* Fri Sep 28 2007 Dan Walsh 2.0.27-4 +- Allow policy writer to select user types to transition to there users + +* Thu Sep 27 2007 Dan Walsh 2.0.27-3 +- Fix bug in building policy with polgengui +- Creating ports correctly + +* Wed Sep 26 2007 Dan Walsh 2.0.27-1 +- Update to upstream + * Improve semodule reporting of system errors from Stephen Smalley. + +* Mon Sep 24 2007 Dan Walsh 2.0.26-3 +- Show local changes with semanage + +* Mon Sep 24 2007 Dan Walsh 2.0.26-2 +- Fixed spelling mistakes in booleans defs +- Update po + +* Tue Sep 18 2007 Dan Walsh 2.0.26-1 +- Update to upstream + * Fix setfiles selabel option flag setting for 64-bit from Stephen Smalley. + +* Tue Sep 18 2007 Dan Walsh 2.0.25-15 +- Fix wording in policy generation tool + +* Fri Sep 14 2007 Dan Walsh 2.0.25-14 +- Fix calls to _admin interfaces + +* Thu Sep 13 2007 Dan Walsh 2.0.25-13 +- Upgrade version of sepolgen from NSA + * Expand the sepolgen parser to parse all current refpolicy modules from Karl MacMillan. + * Suppress generation of rules for non-denials from Karl MacMillan (take 3). + +* Tue Sep 11 2007 Dan Walsh 2.0.25-12 +- Remove bogus import libxml2 + +* Mon Sep 10 2007 Dan Walsh 2.0.25-11 +- Lots of fixes for polgengui + +* Thu Sep 6 2007 Dan Walsh 2.0.25-10 +- Change Requires /bin/rpm to rpm + +* Wed Sep 5 2007 Dan Walsh 2.0.25-9 +- Bump libsemanage version for disable dontaudit +- New gui features for creating admin users + +* Fri Aug 31 2007 Dan Walsh 2.0.25-8 +- Fix generated code for admin policy + +* Fri Aug 31 2007 Dan Walsh 2.0.25-7 +- Lots of fixes for role templates + +* Tue Aug 28 2007 Dan Walsh 2.0.25-6 +- Add more role_templates + +* Tue Aug 28 2007 Dan Walsh 2.0.25-5 +- Update genpolgui to add creation of user domains + +* Mon Aug 27 2007 Dan Walsh 2.0.25-4 +- Fix location of sepolgen-ifgen + +* Sat Aug 25 2007 Dan Walsh 2.0.25-3 +- Add selinux-polgengui to desktop + +* Fri Aug 24 2007 Dan Walsh 2.0.25-2 +- Cleanup spec + +* Thu Aug 23 2007 Dan Walsh 2.0.25-1 +- Update semodule man page + * Fix genhomedircon searching for USER from Todd Miller + * Install run_init with mode 0755 from Dan Walsh. + * Fix chcat from Dan Walsh. + * Fix fixfiles pattern expansion and error reporting from Dan Walsh. + * Optimize genhomedircon to compile regexes once from Dan Walsh. + * Fix semanage gettext call from Dan Walsh. + +* Thu Aug 23 2007 Dan Walsh 2.0.23-2 +- Update semodule man page + +* Mon Aug 20 2007 Dan Walsh 2.0.23-1 +- Update to match NSA + * Disable dontaudits via semodule -D + +* Wed Aug 1 2007 Dan Walsh 2.0.22-13 +- Speed up genhomedircon by an order of magnitude by compiling regex +- Allow semanage fcontext -a -t <> /path to work + +* Fri Jul 27 2007 Dan Walsh 2.0.22-11 +- Fixfiles update required to match new regex + +* Fri Jul 27 2007 Dan Walsh 2.0.22-10 +- Update booleans translations + +* Wed Jul 25 2007 Jeremy Katz - 2.0.22-9 +- rebuild for toolchain bug + +* Tue Jul 24 2007 Dan Walsh 2.0.22-8 +- Add requires libselinux-python + +* Mon Jul 23 2007 Dan Walsh 2.0.22-7 +- Fix fixfiles to report incorrect rpm +- Patch provided by Tony Nelson + +* Fri Jul 20 2007 Dan Walsh 2.0.22-6 +- Clean up spec file + +* Fri Jul 13 2007 Dan Walsh 2.0.22-5 +- Require newer libselinux version + +* Sat Jul 7 2007 Dan Walsh 2.0.22-4 +- Fix checking for conflicting directory specification in genhomedircon + +* Mon Jun 25 2007 Dan Walsh 2.0.22-3 +- Fix spelling mistakes in GUI + +* Fri Jun 22 2007 Dan Walsh 2.0.22-2 +- Fix else path in chcat + +* Thu Jun 21 2007 Dan Walsh 2.0.22-1 +- Update to match NSA + * Rebase setfiles to use new labeling interface. + +* Wed Jun 13 2007 Dan Walsh 2.0.21-2 +- Add filter to all system-config-selinux lists + +* Wed Jun 13 2007 Dan Walsh 2.0.21-1 +- Update to match NSA + * Fixed setsebool (falling through to error path on success). + +* Mon Jun 11 2007 Dan Walsh 2.0.20-1 +- Update to match NSA + * Merged genhomedircon fixes from Dan Walsh. + * Merged setfiles -c usage fix from Dan Walsh. + * Merged restorecon fix from Yuichi Nakamura. + * Dropped -lsepol where no longer needed. + +* Mon Jun 11 2007 Dan Walsh 2.0.19-5 +- Fix translations code, Add more filters to gui + +* Mon Jun 4 2007 Dan Walsh 2.0.19-4 +- Fix setfiles -c to make it work + +* Mon Jun 4 2007 Dan Walsh 2.0.19-3 +- Fix french translation to not crash system-config-selinux + +* Fri Jun 1 2007 Dan Walsh 2.0.19-2 +- Fix genhomedircon to work in stage2 builds of anaconda + +* Sat May 19 2007 Dan Walsh 2.0.19-1 +- Update to match NSA + +* Thu May 17 2007 Dan Walsh 2.0.16-2 +- Fixes for polgentool templates file + +* Fri May 4 2007 Dan Walsh 2.0.16-1 +- Updated version of policycoreutils + * Merged support for modifying the prefix via semanage from Dan Walsh. +- Fixed genhomedircon to find homedirs correctly. + +* Tue May 1 2007 Dan Walsh 2.0.15-1 +- Updated version of policycoreutils + * Merged po file updates from Dan Walsh. +- Fix semanage to be able to modify prefix in user record + +* Mon Apr 30 2007 Dan Walsh 2.0.14-2 +- Fix title on system-config-selinux + +* Wed Apr 25 2007 Dan Walsh 2.0.14-1 +- Updated version of policycoreutils + * Build fix for setsebool. + +* Wed Apr 25 2007 Dan Walsh 2.0.13-1 +- Updated version of policycoreutils + * Merged setsebool patch to only use libsemanage for persistent boolean changes from Stephen Smalley. + * Merged genhomedircon patch to use the __default__ setting from Dan Walsh. + * Dropped -b option from load_policy in preparation for always preserving booleans across reloads in the kernel. + +* Tue Apr 24 2007 Dan Walsh 2.0.10-2 +- Fixes for polgengui + +* Tue Apr 24 2007 Dan Walsh 2.0.10-1 +- Updated version of policycoreutils + * Merged chcat, fixfiles, genhomedircon, restorecond, and restorecon patches from Dan Walsh. + +* Fri Apr 20 2007 Dan Walsh 2.0.9-10 +- Fix genhomedircon to handle non user_u for the default user + +* Wed Apr 18 2007 Dan Walsh 2.0.9-9 +- More cleanups for gui + +* Wed Apr 18 2007 Dan Walsh 2.0.9-8 +- Fix size and use_tmp problem on gui + +* Wed Apr 18 2007 Dan Walsh 2.0.9-7 +- Fix restorecon crash + +* Wed Apr 18 2007 Dan Walsh 2.0.9-6 +- Change polgengui to a druid + +* Tue Apr 17 2007 Dan Walsh 2.0.9-5 +- Fully path script.py + +* Mon Apr 16 2007 Dan Walsh 2.0.9-4 +- Add -l flag to restorecon to not traverse file systems + +* Sat Apr 14 2007 Dan Walsh 2.0.9-3 +- Fixes for policygengui + +* Fri Apr 13 2007 Dan Walsh 2.0.9-2 +- Add polgengui + +* Thu Apr 12 2007 Dan Walsh 2.0.9-1 +- Updated version of sepolgen + * Merged seobject setransRecords patch to return the first alias from Xavier Toth. + +* Wed Apr 11 2007 Dan Walsh 2.0.8-1 +- Updated version of sepolgen + * Merged updates to sepolgen-ifgen from Karl MacMillan. + * Merged updates to sepolgen parser and tools from Karl MacMillan. + This includes improved debugging support, handling of interface + calls with list parameters, support for role transition rules, + updated range transition rule support, and looser matching. + +* Mon Apr 9 2007 Dan Walsh 2.0.7-11 +- Don't generate invalid context with genhomedircon + +* Mon Apr 9 2007 Dan Walsh 2.0.7-10 +- Add filter to booleans page + +* Tue Apr 3 2007 Dan Walsh 2.0.7-9 +- Fix polgen.py to not generate udp rules on tcp input + +* Fri Mar 30 2007 Dan Walsh 2.0.7-8 +- system-config-selinux should be able to run on a disabled system, +- at least enough to get it enabled. + +* Thu Mar 29 2007 Dan Walsh 2.0.7-7 +- Many fixes to polgengui + +* Fri Mar 23 2007 Dan Walsh 2.0.7-6 +- Updated version of sepolgen + * Merged patch to discard self from types when generating requires from Karl MacMillan. + +* Fri Mar 23 2007 Dan Walsh 2.0.7-5 +- Change location of audit2allow and sepol-ifgen to sbin +- Updated version of sepolgen + * Merged patch to move the sepolgen runtime data from /usr/share to /var/lib to facilitate a read-only /usr from Karl MacMillan. + +* Mon Mar 19 2007 Dan Walsh 2.0.7-4 +- Add polgen gui +- Many fixes to system-config-selinux + +* Mon Mar 12 2007 Dan Walsh 2.0.7-3 +- service restorecond status needs to set exit value correctly + +* Mon Mar 12 2007 Dan Walsh 2.0.7-2 +- Fix gui + +* Thu Mar 1 2007 Dan Walsh 2.0.7-1 +- Update to upstream + * Merged restorecond init script LSB compliance patch from Steve Grubb. + -sepolgen + * Merged better matching for refpolicy style from Karl MacMillan + * Merged support for extracting interface paramaters from interface calls from Karl MacMillan + * Merged support for parsing USER_AVC audit messages from Karl MacMillan. + +* Tue Feb 27 2007 Dan Walsh 2.0.6-3 +- Update to upstream + -sepolgen + * Merged support for enabling parser debugging from Karl MacMillan. +- Add sgrupp cleanup of restorcon init script + +* Mon Feb 26 2007 Dan Walsh 2.0.6-2 +- Add Bill Nottinham patch to run restorcond condrestart in postun + +* Fri Feb 23 2007 Dan Walsh 2.0.6-1 +- Update to upstream + - policycoreutils + * Merged newrole O_NONBLOCK fix from Linda Knippers. + * Merged sepolgen and audit2allow patches to leave generated files + in the current directory from Karl MacMillan. + * Merged restorecond memory leak fix from Steve Grubb. + -sepolgen + * Merged patch to leave generated files (e.g. local.te) in current directory from Karl MacMillan. + * Merged patch to make run-tests.py use unittest.main from Karl MacMillan. + * Merged patch to update PLY from Karl MacMillan. + * Merged patch to update the sepolgen parser to handle the latest reference policy from Karl MacMillan. + +* Thu Feb 22 2007 Dan Walsh 2.0.3-2 +- Do not fail on sepolgen-ifgen + +* Thu Feb 22 2007 Dan Walsh 2.0.3-1 +- Update to upstream + * Merged translations update from Dan Walsh. + * Merged chcat fixes from Dan Walsh. + * Merged man page fixes from Dan Walsh. + * Merged seobject prefix validity checking from Dan Walsh. + * Merged Makefile and refparser.py patch from Dan Walsh. + Fixes PYTHONLIBDIR definition and error handling on interface files. + +* Tue Feb 20 2007 Dan Walsh 2.0.2-3 +- Updated newrole NONBlOCK patch + +* Tue Feb 20 2007 Dan Walsh 2.0.2-2 +- Remove Requires: %%{name}-plugins + +* Tue Feb 20 2007 Dan Walsh 2.0.2-1 +- Update to upstream + * Merged seobject exception handler fix from Caleb Case. + * Merged setfiles memory leak patch from Todd Miller. + +* Thu Feb 15 2007 Dan Walsh 2.0.1-2 +- Cleanup man pages syntax +- Add sepolgen + +* Mon Feb 12 2007 Dan Walsh 2.0.1-1 +- Update to upstream + * Merged small fix to correct include of errcodes.h in semodule_deps from Dan Walsh. + +* Wed Feb 7 2007 Dan Walsh 2.0.0-1 +- Update to upstream + * Merged new audit2allow from Karl MacMillan. + This audit2allow depends on the new sepolgen python module. + Note that you must run the sepolgen-ifgen tool to generate + the data needed by audit2allow to generate refpolicy. + * Fixed newrole non-pam build. +- Fix Changelog and spelling error in man page + +* Thu Feb 1 2007 Dan Walsh 1.34.1-4 +- Fix audit2allow on missing translations + +* Wed Jan 24 2007 Dan Walsh 1.34.1-3 +- More chcat fixes + +* Wed Jan 24 2007 Dan Walsh 1.34.1-2 +- Change chcat to exec semodule so file context is maintained + +* Wed Jan 24 2007 Dan Walsh 1.34.1-1 +- Fix system-config-selinux ports view +- Update to upstream + * Fixed newrole non-pam build. + * Updated version for stable branch. + +* Wed Jan 17 2007 Dan Walsh 1.33.15-1 +- Update to upstream + * Merged unicode-to-string fix for seobject audit from Dan Walsh. + * Merged man page updates to make "apropos selinux" work from Dan Walsh. +* Tue Jan 16 2007 Dan Walsh 1.33.14-1 + * Merged newrole man page patch from Michael Thompson. + * Merged patch to fix python unicode problem from Dan Walsh. + +* Tue Jan 16 2007 Dan Walsh 1.33.12-3 +- Fix handling of audit messages for useradd change +Resolves: #222159 + +* Fri Jan 12 2007 Dan Walsh 1.33.12-2 +- Update man pages by adding SELinux to header to fix apropos database +Resolves: #217881 + +* Tue Jan 9 2007 Dan Walsh 1.33.12-1 +- Want to update to match api +- Update to upstream + * Merged newrole securetty check from Dan Walsh. + * Merged semodule patch to generalize list support from Karl MacMillan. +Resolves: #200110 + +* Tue Jan 9 2007 Dan Walsh 1.33.11-1 +- Update to upstream + * Merged fixfiles and seobject fixes from Dan Walsh. + * Merged semodule support for list of modules after -i from Karl MacMillan. + +* Tue Jan 9 2007 Dan Walsh 1.33.10-1 +- Update to upstream + * Merged patch to correctly handle a failure during semanage handle + creation from Karl MacMillan. + * Merged patch to fix seobject role modification from Dan Walsh. + +* Fri Jan 5 2007 Dan Walsh 1.33.8-2 +- Stop newrole -l from working on non secure ttys +Resolves: #200110 + +* Thu Jan 4 2007 Dan Walsh 1.33.8-1 +- Update to upstream + * Merged patches from Dan Walsh to: + - omit the optional name from audit2allow + - use the installed python version in the Makefiles + - re-open the tty with O_RDWR in newrole + +* Wed Jan 3 2007 Dan Walsh 1.33.7-1 +- Update to upstream + * Patch from Dan Walsh to correctly suppress warnings in load_policy. + +* Tue Jan 2 2007 Dan Walsh 1.33.6-9 +- Fix fixfiles script to use tty command correctly. If this command fails, it +should set the LOGFILE to /dev/null +Resolves: #220879 + +* Wed Dec 20 2006 Dan Walsh 1.33.6-8 +- Remove hard coding of python2.4 from Makefiles + +* Tue Dec 19 2006 Dan Walsh 1.33.6-7 +- add exists switch to semanage to tell it not to check for existance of Linux user +Resolves: #219421 + +* Mon Dec 18 2006 Dan Walsh 1.33.6-6 +- Fix audit2allow generating reference policy +- Fix semanage to manage user roles properly +Resolves: #220071 + +* Fri Dec 8 2006 Dan Walsh 1.33.6-5 +- Update po files +- Fix newrole to open stdout and stderr rdrw so more will work on MLS machines +Resolves: #216920 + +* Thu Dec 7 2006 Jeremy Katz - 1.33.6-4 +- rebuild for python 2.5 + +* Wed Dec 6 2006 Dan Walsh 1.33.6-3 +- Update po files +Resolves: #216920 + +* Fri Dec 1 2006 Dan Walsh 1.33.6-2 +- Update po files +Resolves: #216920 + +* Wed Nov 29 2006 Dan Walsh 1.33.6-1 +- Update to upstream + * Patch from Dan Walsh to add an pam_acct_msg call to run_init + * Patch from Dan Walsh to fix error code returns in newrole + * Patch from Dan Walsh to remove verbose flag from semanage man page + * Patch from Dan Walsh to make audit2allow use refpolicy Makefile + in /usr/share/selinux/ + +* Wed Nov 29 2006 Dan Walsh 1.33.5-4 +- Fixing the Makefile line again to build with LSPP support +Resolves: #208838 + +* Wed Nov 29 2006 Dan Walsh 1.33.5-3 +- Don't report errors on restorecond when file system does not support XATTRS +Resolves: #217694 + +* Tue Nov 28 2006 Dan Walsh 1.33.5-2 +- Fix -q qualifier on load_policy +Resolves: #214827 + +* Tue Nov 28 2006 Dan Walsh 1.33.5-1 +- Merge to upstream +- Fix makefile line +Resolves: #208838 + +* Fri Nov 24 2006 Dan Walsh 1.33.4-2 +- Additional po changes +- Added all booleans definitions + +* Wed Nov 22 2006 Dan Walsh 1.33.4-1 +- Upstream accepted my patches + * Merged setsebool patch from Karl MacMillan. + This fixes a bug reported by Yuichi Nakamura with + always setting booleans persistently on an unmanaged system. + +* Mon Nov 20 2006 Dan Walsh 1.33.2-2 +- Fixes for the gui + +* Mon Nov 20 2006 Dan Walsh 1.33.2-1 +- Upstream accepted my patches + +* Fri Nov 17 2006 Dan Walsh 1.33.1-9 +- Add Amy Grifis Patch to preserve newrole exit status + +* Thu Nov 16 2006 Dan Walsh 1.33.1-8 +- Fix display of gui + +* Thu Nov 16 2006 Dan Walsh 1.33.1-7 +- Add patch by Jose Plans to make run_init use pam_acct_mgmt + +* Wed Nov 15 2006 Dan Walsh 1.33.1-6 +- More fixes to gui + +* Wed Nov 15 2006 Dan Walsh 1.33.1-5 +- Fix audit2allow to generate referene policy + +* Wed Nov 15 2006 Dan Walsh 1.33.1-4 +- Add group sort for portsPage.py +- Add enable/disableaudit to modules page + +* Wed Nov 15 2006 Dan Walsh 1.33.1-3 +- Add glade file + +* Tue Nov 14 2006 Dan Walsh 1.33.1-2 +- Fix Module handling in system-config-selinux + +* Tue Nov 14 2006 Dan Walsh 1.33.1-1 +- Update to upstream + * Merged newrole patch set from Michael Thompson. +- Add policycoreutils-gui + +* Thu Nov 9 2006 Dan Walsh 1.32-3 +- No longer requires rhpl + +* Mon Nov 6 2006 Dan Walsh 1.32-2 +- Fix genhomedircon man page + +* Mon Oct 9 2006 Dan Walsh 1.32-1 +- Add newrole audit patch from sgrubb +- Update to upstream + * Merged audit2allow -l fix from Yuichi Nakamura. + * Merged restorecon -i and -o - support from Karl MacMillan. + * Merged semanage/seobject fix from Dan Walsh. + * Merged fixfiles -R and verify changes from Dan Walsh. + +* Fri Oct 6 2006 Dan Walsh 1.30.30-2 +- Separate out newrole into its own package + +* Fri Sep 29 2006 Dan Walsh 1.30.30-1 +- Update to upstream + * Merged newrole auditing of failures due to user actions from + Michael Thompson. + +* Thu Sep 21 2006 Dan Walsh 1.30.29-6 +- Pass -i qualifier to restorecon for fixfiles -R +- Update translations + +* Thu Sep 21 2006 Dan Walsh 1.30.29-5 +- Remove recursion from fixfiles -R calls +- Fix semanage to verify prefix + +* Thu Sep 21 2006 Dan Walsh 1.30.29-4 +- More translations +- Compile with -pie + +* Mon Sep 18 2006 Dan Walsh 1.30.29-3 +- Add translations +- Fix audit2allow -l + +* Thu Sep 14 2006 Dan Walsh 1.30.29-2 +- Rebuild + +* Thu Sep 14 2006 Dan Walsh 1.30.29-1 +- Update to upstream +- Change -o to take "-" for stdout + +* Wed Sep 13 2006 Dan Walsh 1.30.28-9 +- Add -h support for genhomedircon + +* Wed Sep 13 2006 Dan Walsh 1.30.28-8 +- Fix fixfiles handling of -o + +* Mon Sep 11 2006 Dan Walsh 1.30.28-7 +- Make restorecon return the number of changes files if you use the -n flag + +* Fri Sep 8 2006 Dan Walsh 1.30.28-6 +- Change setfiles and restorecon to use stderr except for -o flag +- Also -o flag will now output files + +* Thu Sep 7 2006 Dan Walsh 1.30.28-5 +- Put back Erich's change + +* Wed Sep 6 2006 Dan Walsh 1.30.28-4 +- Remove recursive switch when using rpm + +* Wed Sep 6 2006 Dan Walsh 1.30.28-3 +- Fix fixfiles to handle multiple rpm and make -o work + +* Fri Sep 1 2006 Dan Walsh 1.30.28-2 +- Apply patch + +* Fri Sep 1 2006 Dan Walsh 1.30.28-1 +- Security fixes to run python in a more locked down manner +- More Translations +- Update to upstream + * Merged fix for restorecon // handling from Erich Schubert. + * Merged translations update and fixfiles fix from Dan Walsh. + +* Thu Aug 31 2006 Dan Walsh 1.30.27-5 +- Change scripts to use /usr/sbin/python + +* Thu Aug 31 2006 Dan Walsh 1.30.27-4 +- Add -i qualified to restorecon to tell it to ignore files that do not exist +- Fixfiles also modified for this change + +* Thu Aug 31 2006 Dan Walsh 1.30.27-3 +- Ignore sigpipe + +* Thu Aug 31 2006 Dan Walsh 1.30.27-2 +- Fix init script and add translations + +* Thu Aug 24 2006 Dan Walsh 1.30.27-1 +- Update to upstream + * Merged fix for restorecon symlink handling from Erich Schubert. + +* Sat Aug 12 2006 Dan Walsh 1.30.26-1 +- Update to upstream + * Merged semanage local file contexts patch from Chris PeBenito. +- Fix fixfiles log creation +- More translations + +* Thu Aug 3 2006 Dan Walsh 1.30.25-1 +- Update to upstream + * Merged patch from Dan Walsh with: + * audit2allow: process MAC_POLICY_LOAD events + * newrole: run shell with - prefix to start a login shell + * po: po file updates + * restorecond: bail if SELinux not enabled + * fixfiles: omit -q + * genhomedircon: fix exit code if non-root + * semodule_deps: install man page + * Merged secon Makefile fix from Joshua Brindle. + * Merged netfilter contexts support patch from Chris PeBenito. + +* Wed Aug 2 2006 Dan Walsh 1.30.22-3 +- Fix audit2allow to handle reload of policy + +* Wed Aug 2 2006 Dan Walsh 1.30.22-2 +- Stop restorecond init script when selinux is not enabled + +* Tue Aug 1 2006 Dan Walsh 1.30.22-1 +- Update to upstream + * Merged restorecond size_t fix from Joshua Brindle. + * Merged secon keycreate patch from Michael LeMay. + * Merged restorecond fixes from Dan Walsh. + Merged updated po files from Dan Walsh. + * Merged python gettext patch from Stephen Bennett. + * Merged semodule_deps from Karl MacMillan. + +* Thu Jul 27 2006 Dan Walsh 1.30.17-7 +- Change newrole to exec a login shell to prevent suspend. + +* Fri Jul 21 2006 Dan Walsh 1.30.17-6 +- Report error when selinux not enabled in restorecond + +* Tue Jul 18 2006 Dan Walsh 1.30.17-5 +- Fix handling of restorecond + +* Mon Jul 17 2006 Dan Walsh 1.30.17-4 +- Fix creation of restorecond pidfile + +* Mon Jul 17 2006 Dan Walsh 1.30.17-3 +- Update translations +- Update to new GCC + +* Mon Jul 10 2006 Dan Walsh 1.30.17-2 +- Add verbose flag to restorecond and update translations + +* Tue Jul 4 2006 Dan Walsh 1.30.17-1 +- Update to upstream + * Lindent. + * Merged patch from Dan Walsh with: + * -p option (progress) for setfiles and restorecon. + * disable context translation for setfiles and restorecon. + * on/off values for setsebool. + * Merged setfiles and semodule_link fixes from Joshua Brindle. + +* Thu Jun 22 2006 Dan Walsh 1.30.14-5 +- Add progress indicator on fixfiles/setfiles/restorecon + +* Wed Jun 21 2006 Dan Walsh 1.30.14-4 +- Don't use translations with matchpathcon + +* Tue Jun 20 2006 Dan Walsh 1.30.14-3 +- Prompt for selinux-policy-devel package in audit2allow + +* Mon Jun 19 2006 Dan Walsh 1.30.14-2 +- Allow setsebool to use on/off +- Update translations + +* Fri Jun 16 2006 Dan Walsh 1.30.14-1 +- Update to upstream + * Merged fix for setsebool error path from Serge Hallyn. + * Merged patch from Dan Walsh with: + * Updated po files. + * Fixes for genhomedircon and seobject. + * Audit message for mass relabel by setfiles. + +* Tue Jun 13 2006 James Antill 1.30.12-5 +- Update audit mass relabel to only compile in when audit is installed. + +* Mon Jun 12 2006 Dan Walsh 1.30.12-4 +- Update to required versions +- Update translation + +* Wed Jun 7 2006 Dan Walsh 1.30.12-3 +- Fix shell selection + +* Mon Jun 5 2006 Dan Walsh 1.30.12-2 +- Add BuildRequires for gettext + +* Mon Jun 5 2006 Dan Walsh 1.30.12-1 + * Updated fixfiles script for new setfiles location in /sbin. + +* Tue May 30 2006 Dan Walsh 1.30.11-1 +- Update to upstream + * Merged more translations from Dan Walsh. + * Merged patch to relocate setfiles to /sbin for early relabel + when /usr might not be mounted from Dan Walsh. + * Merged semanage/seobject patch to preserve fcontext ordering in list. + * Merged secon patch from James Antill. + +* Fri May 26 2006 Dan Walsh 1.30.10-4 +- Fix seobject.py to not sort the file_context file. +- move setfiles to /sbin + +* Wed May 24 2006 James Antill 1.30.10-3 +- secon man page and getopt fixes. +- Enable mass relabel audit, even though it doesn't work. + +* Wed May 24 2006 James Antill 1.30.10-2 +- secon fixes for --self-exec etc. +- secon change from level => sensitivity, add clearance. +- Add mass relabel AUDIT patch, but disable it until kernel problem solved. + +* Tue May 23 2006 Dan Walsh 1.30.10-1 +- Update to upstream + * Merged patch with updates to audit2allow, secon, genhomedircon, + and semanage from Dan Walsh. + +* Sat May 20 2006 Dan Walsh 1.30.9-4 +- Fix exception in genhomedircon + +* Mon May 15 2006 James Antill 1.30.9-3 +- Add rhpl dependancy + +* Mon May 15 2006 James Antill 1.30.9-2 +- Add secon man page and prompt options. + +* Mon May 15 2006 Dan Walsh 1.30.9-1 +- Update to upstream + * Fixed audit2allow and po Makefiles for DESTDIR= builds. + * Merged .po file patch from Dan Walsh. + * Merged bug fix for genhomedircon. + +* Wed May 10 2006 Dan Walsh 1.30.8-2 +- Fix exception on bad file_context + +* Mon May 8 2006 Dan Walsh 1.30.8-1 +- Update to upstream + * Merged fix warnings patch from Karl MacMillan. + * Merged patch from Dan Walsh. + This includes audit2allow changes for analysis plugins, + internationalization support for several additional programs + and added po files, some fixes for semanage, and several cleanups. + It also adds a new secon utility. + +* Sun May 7 2006 Dan Walsh 1.30.6-5 +- Fix genhomedircon to catch duplicate homedir problem + +* Thu May 4 2006 Dan Walsh 1.30.6-4 +- Add secon program +- Add translations + +* Thu Apr 20 2006 Dan Walsh 1.30.6-3 +- Fix check for "msg" + +* Mon Apr 17 2006 Dan Walsh 1.30.6-2 +- Ship avc.py + +* Fri Apr 14 2006 Dan Walsh 1.30.6-1 +- Add /etc/samba/secrets.tdb to restorecond.conf +- Update from upstream + * Merged semanage prefix support from Russell Coker. + * Added a test to setfiles to check that the spec file is + a regular file. + +* Thu Apr 06 2006 Karsten Hopp 1.30.4-4 +- added some missing buildrequires +- added Requires: initscripts for /sbin/service + +* Thu Apr 06 2006 Karsten Hopp 1.30.4-3 +- use absolute path /sbin/service + +* Wed Apr 5 2006 Dan Walsh 1.30.4-2 +- Fix audit2allow to not require ausearch. +- Fix man page +- Add libflashplayer to restorecond.conf + +* Wed Mar 29 2006 Dan Walsh 1.30.4-1 +- Update from upstream + * Merged audit2allow fixes for refpolicy from Dan Walsh. + * Merged fixfiles patch from Dan Walsh. + * Merged restorecond daemon from Dan Walsh. + * Merged semanage non-MLS fixes from Chris PeBenito. + * Merged semanage and semodule man page examples from Thomas Bleher. + +* Tue Mar 28 2006 Dan Walsh 1.30.1-4 +- Clean up reference policy generation in audit2allow + +* Tue Mar 21 2006 Dan Walsh 1.30.1-3 +- Add IN_MOVED_TO to catch renames + +* Tue Mar 21 2006 Dan Walsh 1.30.1-2 +- make restorecond only ignore non directories with lnk > 1 + +* Tue Mar 21 2006 Dan Walsh 1.30.1-1 +- Make audit2allow translate dontaudit as well as allow rules +- Update from upstream + * Merged semanage labeling prefix patch from Ivan Gyurdiev. + +* Tue Mar 21 2006 Dan Walsh 1.30-5 +- Fix audit2allow to retrieve dontaudit rules + +* Mon Mar 20 2006 Dan Walsh 1.30-4 +- Open file descriptor to make sure file does not change from underneath. + +* Fri Mar 17 2006 Dan Walsh 1.30-3 +- Fixes for restorecond attack via symlinks +- Fixes for fixfiles + +* Fri Mar 17 2006 Dan Walsh 1.30-2 +- Restorecon has to handle suspend/resume + +* Fri Mar 17 2006 Dan Walsh 1.30-1 +- Update to upstream + +* Fri Mar 10 2006 Dan Walsh 1.29.27-1 +- Add restorecond + +* Fri Mar 10 2006 Dan Walsh 1.29.26-6 +- Remove prereq + +* Mon Mar 6 2006 Dan Walsh 1.29.26-5 +- Fix audit2allow to generate all rules + +* Fri Mar 3 2006 Dan Walsh 1.29.26-4 +- Minor fixes to chcat and semanage + +* Fri Feb 24 2006 Dan Walsh 1.29.26-3 +- Add missing setsebool man page + +* Thu Feb 23 2006 Dan Walsh 1.29.26-2 +- Change audit2allow to use devel instead of refpolicy + +* Mon Feb 20 2006 Dan Walsh 1.29.26-1 +- Update from upstream + * Merged semanage bug fix patch from Ivan Gyurdiev. + * Merged improve bindings patch from Ivan Gyurdiev. + * Merged semanage usage patch from Ivan Gyurdiev. + * Merged use PyList patch from Ivan Gyurdiev. + +* Mon Feb 13 2006 Dan Walsh 1.29.23-1 +- Update from upstream + * Merged newrole -V/--version support from Glauber de Oliveira Costa. + * Merged genhomedircon prefix patch from Dan Walsh. + * Merged optionals in base patch from Joshua Brindle. + +* Fri Feb 10 2006 Jesse Keating - 1.29.20-2.1 +- bump again for double-long bug on ppc(64) + +* Tue Feb 07 2006 Dan Walsh 1.29.20-2 +- Fix auditing to semanage +- Change genhomedircon to use new prefix interface in libselinux + +* Tue Feb 07 2006 Dan Walsh 1.29.20-1 +- Update from upstream + * Merged seuser/user_extra support patch to semodule_package + from Joshua Brindle. + * Merged getopt type fix for semodule_link/expand and sestatus + from Chris PeBenito. +- Fix genhomedircon output + +* Tue Feb 07 2006 Jesse Keating - 1.29.18-2.1 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Fri Feb 3 2006 Dan Walsh 1.29.18-2 +- Add auditing to semanage + +* Thu Feb 2 2006 Dan Walsh 1.29.18-1 +- Update from upstream + * Merged clone record on set_con patch from Ivan Gyurdiev. + +* Mon Jan 30 2006 Dan Walsh 1.29.17-1 +- Update from upstream + * Merged genhomedircon fix from Dan Walsh. + * Merged seusers.system patch from Ivan Gyurdiev. + * Merged improve port/fcontext API patch from Ivan Gyurdiev. + * Merged genhomedircon patch from Dan Walsh. + +* Fri Jan 27 2006 Dan Walsh 1.29.15-1 +- Update from upstream + * Merged newrole audit patch from Steve Grubb. + * Merged seuser -> seuser local rename patch from Ivan Gyurdiev. + * Merged semanage and semodule access check patches from Joshua Brindle. +* Wed Jan 25 2006 Dan Walsh 1.29.12-1 +- Add a default of /export/home + +* Wed Jan 25 2006 Dan Walsh 1.29.11-3 +- Cleanup of the patch + +* Wed Jan 25 2006 Dan Walsh 1.29.11-2 +- Correct handling of symbolic links in restorecon + +* Wed Jan 25 2006 Dan Walsh 1.29.11-1 +- Added translation support to semanage +- Update from upstream + * Modified newrole and run_init to use the loginuid when + supported to obtain the Linux user identity to re-authenticate, + and to fall back to real uid. Dropped the use of the SELinux + user identity, as Linux users are now mapped to SELinux users + via seusers and the SELinux user identity space is separate. + * Merged semanage bug fixes from Ivan Gyurdiev. + * Merged semanage fixes from Russell Coker. + * Merged chcat.8 and genhomedircon patches from Dan Walsh. + +* Thu Jan 19 2006 Dan Walsh 1.29.9-2 +- Fix genhomedircon to work on MLS policy + +* Thu Jan 19 2006 Dan Walsh 1.29.9-1 +- Update to match NSA + * Merged chcat, semanage, and setsebool patches from Dan Walsh. + +* Thu Jan 19 2006 Dan Walsh 1.29.8-4 +- Fixes for "add"-"modify" error messages +- Fixes for chcat + +* Wed Jan 18 2006 Dan Walsh 1.29.8-3 +- Add management of translation file to semaange and seobject + +* Wed Jan 18 2006 Dan Walsh 1.29.8-2 +- Fix chcat -l -L to work while not root + +* Wed Jan 18 2006 Dan Walsh 1.29.8-1 +- Update to match NSA + * Merged semanage fixes from Ivan Gyurdiev. + * Merged semanage fixes from Russell Coker. + * Merged chcat, genhomedircon, and semanage diffs from Dan Walsh. + +* Tue Jan 17 2006 Dan Walsh 1.29.7-4 +- Update chcat to manage user categories also + +* Sat Jan 14 2006 Dan Walsh 1.29.7-3 +- Add check for root for semanage, genhomedircon + +* Sat Jan 14 2006 Dan Walsh 1.29.7-2 +- Add ivans patch + +* Fri Jan 13 2006 Dan Walsh 1.29.7-1 +- Update to match NSA + * Merged newrole cleanup patch from Steve Grubb. + * Merged setfiles/restorecon performance patch from Russell Coker. + * Merged genhomedircon and semanage patches from Dan Walsh. + * Merged remove add_local/set_local patch from Ivan Gyurdiev. + +* Tue Jan 10 2006 Dan Walsh 1.29.5-3 +- Fixes for mls policy + +* Tue Jan 10 2006 Dan Walsh 1.29.5-2 +- Update semanage and split out seobject +- Fix labeleing of home_root + +* Thu Jan 5 2006 Dan Walsh 1.29.5-1 +- Update to match NSA + * Added filename to semodule error reporting. + +* Thu Jan 5 2006 Dan Walsh 1.29.4-1 +- Update to match NSA + * Merged genhomedircon and semanage patch from Dan Walsh. + * Changed semodule error reporting to include argv[0]. + +* Wed Jan 4 2006 Dan Walsh 1.29.3-1 +- Update to match NSA + * Merged semanage getpwnam bug fix from Serge Hallyn (IBM). + * Merged patch series from Ivan Gyurdiev. + This includes patches to: + - cleanup setsebool + - update setsebool to apply active booleans through libsemanage + - update semodule to use the new semanage_set_rebuild() interface + - fix various bugs in semanage + * Merged patch from Dan Walsh (Red Hat). + This includes fixes for restorecon, chcat, fixfiles, genhomedircon, + and semanage. + +* Mon Jan 2 2006 Dan Walsh 1.29.2-10 +- Fix restorecon to not say it is changing user section when -vv is specified + +* Tue Dec 27 2005 Dan Walsh 1.29.2-9 +- Fixes for semanage, patch from Ivan and added a test script + +* Sat Dec 24 2005 Dan Walsh 1.29.2-8 +- Fix getpwnam call + +* Fri Dec 23 2005 Dan Walsh 1.29.2-7 +- Anaconda fixes + +* Thu Dec 22 2005 Dan Walsh 1.29.2-6 +- Turn off try catch block to debug anaconda failure + +* Tue Dec 20 2005 Dan Walsh 1.29.2-5 +- More fixes for chcat + +* Tue Dec 20 2005 Dan Walsh 1.29.2-4 +- Add try catch for files that may not exists + +* Mon Dec 19 2005 Dan Walsh 1.29.2-3 +- Remove commands from genhomedircon for installer + +* Wed Dec 14 2005 Dan Walsh 1.29.2-1 +- Fix genhomedircon to work in installer +- Update to match NSA + * Merged patch for chcat script from Dan Walsh. + +* Fri Dec 9 2005 Dan Walsh 1.29.1-2 +- More fixes to chcat + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Thu Dec 8 2005 Dan Walsh 1.29.1-1 +- Update to match NSA + * Merged fix for audit2allow long option list from Dan Walsh. + * Merged -r option for restorecon (alias for -R) from Dan Walsh. + * Merged chcat script and man page from Dan Walsh. + +* Wed Dec 7 2005 Dan Walsh 1.28-1 +- Update to match NSA +- Add gfs support + +* Wed Dec 7 2005 Dan Walsh 1.27.37-1 +- Update to match NSA +- Add chcat to policycoreutils, adding +/- syntax +` +* Tue Dec 6 2005 Dan Walsh 1.27.36-2 +- Require new version of libsemanage + +* Mon Dec 5 2005 Dan Walsh 1.27.36-1 +- Update to match NSA + * Changed genhomedircon to warn on use of ROLE in homedir_template + if using managed policy, as libsemanage does not yet support it. + +* Sun Dec 4 2005 Dan Walsh 1.27.35-1 +- Update to match NSA + * Merged genhomedircon bug fix from Dan Walsh. + * Revised semodule* man pages to refer to checkmodule and + to include example sections. + +* Thu Dec 1 2005 Dan Walsh 1.27.33-1 +- Update to match NSA + * Merged audit2allow --tefile and --fcfile support from Dan Walsh. + * Merged genhomedircon fix from Dan Walsh. + * Merged semodule* man pages from Dan Walsh, and edited them. + * Changed setfiles to set the MATCHPATHCON_VALIDATE flag to + retain validation/canonicalization of contexts during init. + +* Wed Nov 30 2005 Dan Walsh 1.27.31-1 +- Update to match NSA + * Changed genhomedircon to always use user_r for the role in the + managed case since user_get_defrole is broken. +- Add te file capabilities to audit2allow +- Add man pages for semodule + +* Tue Nov 29 2005 Dan Walsh 1.27.30-1 +- Update to match NSA + * Merged sestatus, audit2allow, and semanage patch from Dan Walsh. + * Fixed semodule -v option. + +* Mon Nov 28 2005 Dan Walsh 1.27.29-1 +- Update to match NSA + * Merged audit2allow python script from Dan Walsh. + (old script moved to audit2allow.perl, will be removed later). + * Merged genhomedircon fixes from Dan Walsh. + * Merged semodule quieting patch from Dan Walsh + (inverts default, use -v to restore original behavior). + +* Thu Nov 17 2005 Dan Walsh 1.27.28-3 +- Audit2allow + * Add more error checking + * Add gen policy package + * Add gen requires + +* Wed Nov 16 2005 Dan Walsh 1.27.28-2 +- Update to match NSA + * Merged genhomedircon rewrite from Dan Walsh. +- Rewrite audit2allow to python + +* Mon Nov 14 2005 Dan Walsh 1.27.27-5 +- Fix genhomedircon to work with non libsemanage systems + +* Fri Nov 11 2005 Dan Walsh 1.27.27-3 +- Patch genhomedircon to use libsemanage.py stuff + +* Wed Nov 9 2005 Dan Walsh 1.27.27-1 +- Update to match NSA + * Merged setsebool cleanup patch from Ivan Gyurdiev. + +* Wed Nov 9 2005 Dan Walsh 1.27.26-4 +- Fix genhomedircon to use seusers file, temporary fix until swigified semanage + +* Tue Nov 8 2005 Dan Walsh 1.27.26-1 + * Added -B (--build) option to semodule to force a rebuild. + * Reverted setsebool patch to call semanage_set_reload_bools(). + * Changed setsebool to disable policy reload and to call + security_set_boolean_list to update the runtime booleans. + * Changed setfiles -c to use new flag to set_matchpathcon_flags() + to disable context translation by matchpathcon_init(). + +* Tue Nov 8 2005 Dan Walsh 1.27.23-1 +- Update to match NSA + * Changed setfiles for the context canonicalization support. + * Changed setsebool to call semanage_is_managed() interface + and fall back to security_set_boolean_list() if policy is + not managed. + * Merged setsebool memory leak fix from Ivan Gyurdiev. + * Merged setsebool patch to call semanage_set_reload_bools() + interface from Ivan Gyurdiev. + +* Mon Nov 7 2005 Dan Walsh 1.27.20-1 +- Update to match NSA + * Merged setsebool patch from Ivan Gyurdiev. + This moves setsebool from libselinux/utils to policycoreutils, + and rewrites it to use libsemanage for permanent boolean changes. + +* Tue Oct 25 2005 Dan Walsh 1.27.19-2 +- Rebuild to use latest libselinux, libsemanage, and libsepol + +* Tue Oct 25 2005 Dan Walsh 1.27.19-1 +- Update to match NSA + * Merged semodule support for reload, noreload, and store options + from Joshua Brindle. + * Merged semodule_package rewrite from Joshua Brindle. + +* Thu Oct 20 2005 Dan Walsh 1.27.18-1 +- Update to match NSA + * Cleaned up usage and error messages and releasing of memory by + semodule utilities. + * Corrected error reporting by semodule. + * Updated semodule_expand for change to sepol interface. + * Merged fixes for make DESTDIR= builds from Joshua Brindle. + +* Tue Oct 18 2005 Dan Walsh 1.27.14-1 +- Update to match NSA + * Updated semodule_package for sepol interface changes. + +* Tue Oct 18 2005 Dan Walsh 1.27.13-1 +- Update to match NSA + * Updated semodule_expand/link for sepol interface changes. + +* Sat Oct 15 2005 Dan Walsh 1.27.12-1 +- Update to match NSA + * Merged non-PAM Makefile support for newrole and run_init from Timothy Wood. + +* Fri Oct 14 2005 Dan Walsh 1.27.11-1 +- Update to match NSA + * Updated semodule_expand to use get interfaces for hidden sepol_module_package type. + * Merged newrole and run_init pam config patches from Dan Walsh (Red Hat). + * Merged fixfiles patch from Dan Walsh (Red Hat). + * Updated semodule for removal of semanage_strerror. + + +* Thu Oct 13 2005 Dan Walsh 1.27.7-2 +- Fix run_init.pamd and spec file + +* Wed Oct 12 2005 Dan Walsh 1.27.7-1 +- Update to match NSA + * Updated semodule_link and semodule_expand to use shared libsepol. + Fixed audit2why to call policydb_init prior to policydb_read (still + uses the static libsepol). + +* Mon Oct 10 2005 Dan Walsh 1.27.6-1 +- Update to match NSA + * Updated for changes to libsepol. + Changed semodule and semodule_package to use the shared libsepol. + Disabled build of semodule_link and semodule_expand for now. + Updated audit2why for relocated policydb internal headers, + still needs to be converted to a shared lib interface. + +* Fri Oct 7 2005 Dan Walsh 1.27.5-3 +- Update newrole pam file to remove pam-stack +- Update run_init pam file to remove pam-stack + +* Thu Oct 6 2005 Dan Walsh 1.27.5-1 +- Update to match NSA + * Fixed warnings in load_policy. + * Rewrote load_policy to use the new selinux_mkload_policy() + interface provided by libselinux. + +* Wed Oct 5 2005 Dan Walsh 1.27.3-2 +- Rebuild with newer libararies + +* Wed Sep 28 2005 Dan Walsh 1.27.3-1 +- Update to match NSA + * Merged patch to update semodule to the new libsemanage API + and improve the user interface from Karl MacMillan (Tresys). + * Modified semodule for the create/connect API split. + +* Wed Sep 28 2005 Dan Walsh 1.27.2-2 +- More fixes to stop find from following nfs paths + +* Wed Sep 21 2005 Dan Walsh 1.27.2-1 +- Update to match NSA + * Merged run_init open_init_pty bug fix from Manoj Srivastava + (unblock SIGCHLD). Bug reported by Erich Schubert. + +* Tue Sep 20 2005 Dan Walsh 1.27.1-1 +- Update to match NSA + * Merged error shadowing bug fix for restorecon from Dan Walsh. + * Merged setfiles usage/man page update for -r option from Dan Walsh. + * Merged fixfiles -C patch to ignore :s0 addition on update + to a MCS/MLS policy from Dan Walsh. + +* Thu Sep 15 2005 Dan Walsh 1.26-3 +- Add chcat script for use with chcon. + +* Tue Sep 13 2005 Dan Walsh 1.26-2 +- Fix restorecon to exit with error code + +* Mon Sep 12 2005 Dan Walsh 1.26-1 + * Updated version for release. + +* Tue Sep 6 2005 Dan Walsh 1.25.9-2 +- Add prereq for mount command + +* Thu Sep 1 2005 Dan Walsh 1.25.9-1 +- Update to match NSA + * Changed setfiles -c to translate the context to raw format + prior to calling libsepol. + +* Fri Aug 26 2005 Dan Walsh 1.25.7-3 +- Use new version of libsemange and require it for install + +* Fri Aug 26 2005 Dan Walsh 1.25.7-2 +- Ignore s0 in file context + +* Thu Aug 25 2005 Dan Walsh 1.25.7-1 +- Update to match NSA + * Merged patch for fixfiles -C from Dan Walsh. + +* Tue Aug 23 2005 Dan Walsh 1.25.6-1 +- Update to match NSA + * Merged fixes for semodule_link and sestatus from Serge Hallyn (IBM). + Bugs found by Coverity. + +* Mon Aug 22 2005 Dan Walsh 1.25.5-3 +- Fix fixfiles to call sort -u followed by sort -d. + +* Wed Aug 17 2005 Dan Walsh 1.25.5-2 +- Change fixfiles to ignore /home directory on updates + +* Fri Aug 5 2005 Dan Walsh 1.25.5-1 +- Update to match NSA + * Merged patch to move module read/write code from libsemanage + to libsepol from Jason Tang (Tresys). + +* Thu Jul 28 2005 Dan Walsh 1.25.4-1 +- Update to match NSA + * Changed semodule* to link with libsemanage. + +* Wed Jul 27 2005 Dan Walsh 1.25.3-1 +- Update to match NSA + * Merged restorecon patch from Ivan Gyurdiev. + +* Mon Jul 18 2005 Dan Walsh 1.25.2-1 +- Update to match NSA + * Merged load_policy, newrole, and genhomedircon patches from Red Hat. + +* Thu Jul 7 2005 Dan Walsh 1.25.1-1 +- Update to match NSA + * Merged loadable module support from Tresys Technology. + +* Wed Jun 29 2005 Dan Walsh 1.24-1 +- Update to match NSA + * Updated version for release. + +* Tue Jun 14 2005 Dan Walsh 1.23.11-4 +- Fix Ivan's patch for user role changes + +* Sat May 28 2005 Dan Walsh 1.23.11-3 +- Add Ivan's patch for user role changes in genhomedircon + +* Thu May 26 2005 Dan Walsh 1.23.11-2 +- Fix warning message on reload of booleans + + +* Fri May 20 2005 Dan Walsh 1.23.11-1 +- Update to match NSA + * Merged fixfiles and newrole patch from Dan Walsh. + * Merged audit2why man page from Dan Walsh. + +* Thu May 19 2005 Dan Walsh 1.23.10-2 +- Add call to pam_acct_mgmt in newrole. + +* Tue May 17 2005 Dan Walsh 1.23.10-1 +- Update to match NSA + * Extended audit2why to incorporate booleans and local user + settings when analyzing audit messages. + +* Mon May 16 2005 Dan Walsh 1.23.9-1 +- Update to match NSA + * Updated audit2why for sepol_ prefixes on Flask types to + avoid namespace collision with libselinux, and to + include now. + +* Fri May 13 2005 Dan Walsh 1.23.8-1 +- Fix fixfiles to accept -f +- Update to match NSA + * Added audit2why utility. + +* Fri Apr 29 2005 Dan Walsh 1.23.7-1 +- Change -f flag in fixfiles to remove stuff from /tmp +- Change -F flag to pass -F flag to restorecon/fixfiles. (IE Force relabel). + +* Thu Apr 14 2005 Dan Walsh 1.23.6-1 +- Update to match NSA + * Fixed signed/unsigned pointer bug in load_policy. + * Reverted context validation patch for genhomedircon. + +* Wed Apr 13 2005 Dan Walsh 1.23.5-1 +- Update to match NSA + * Reverted load_policy is_selinux_enabled patch from Dan Walsh. + Otherwise, an initial policy load cannot be performed using + load_policy, e.g. for anaconda. + + +* Mon Apr 11 2005 Dan Walsh 1.23.4-3 +- remove is_selinux_enabled check from load_policy (Bad idea) + +* Mon Apr 11 2005 Dan Walsh 1.23.4-1 +- Update to version from NSA + * Merged load_policy is_selinux_enabled patch from Dan Walsh. + * Merged restorecon verbose output patch from Dan Walsh. + * Merged setfiles altroot patch from Chris PeBenito. + +* Thu Apr 7 2005 Dan Walsh 1.23.3-2 +- Don't run load_policy on a non SELinux kernel. + +* Wed Apr 6 2005 Dan Walsh 1.23.3-1 +- Update to version from NSA + * Merged context validation patch for genhomedircon from Eric Paris. +- Fix verbose output of restorecon + +* Thu Mar 17 2005 Dan Walsh 1.23.2-1 +- Update to version from NSA + * Changed setfiles -c to call set_matchpathcon_flags(3) to + turn off processing of .homedirs and .local. + +* Tue Mar 15 2005 Dan Walsh 1.23.1-1 +- Update to released version from NSA + * Merged rewrite of genhomedircon by Eric Paris. + * Changed fixfiles to relabel jfs since it now supports security xattrs + (as of 2.6.11). Removed reiserfs until 2.6.12 is released with + fixed support for reiserfs and selinux. + +* Thu Mar 10 2005 Dan Walsh 1.22-2 +- Update to released version from NSA +- Patch genhomedircon to handle passwd in different places. + +* Wed Mar 9 2005 Dan Walsh 1.21.22-2 +- Fix genhomedircon to not put bad userad error in file_contexts.homedir + +* Tue Mar 8 2005 Dan Walsh 1.21.22-1 +- Cleanup error reporting + +* Tue Mar 1 2005 Dan Walsh 1.21.21-1 + * Merged load_policy and genhomedircon patch from Dan Walsh. + +* Mon Feb 28 2005 Dan Walsh 1.21.20-3 +- Fix genhomedircon to add extr "\n" + +* Fri Feb 25 2005 Dan Walsh 1.21.20-2 +- Fix genhomedircon to handle blank users + +* Fri Feb 25 2005 Dan Walsh 1.21.20-1 +- Update to latest from NSA +- Add call to libsepol + +* Thu Feb 24 2005 Dan Walsh 1.21.19-4 +- Fix genhomedircon to handle root +- Fix fixfiles to better handle file system types + +* Wed Feb 23 2005 Dan Walsh 1.21.19-2 +- Fix genhomedircon to handle spaces in SELINUXPOLICYTYPE + +* Tue Feb 22 2005 Dan Walsh 1.21.19-1 +- Update to latest from NSA + * Merged several fixes from Ulrich Drepper. + +* Mon Feb 21 2005 Dan Walsh 1.21.18-2 +- Apply Uli patch + * The Makefiles should use the -Wall option even if compiled in beehive + * Add -W, too + * use -Werror when used outside of beehive. This could also be used unconditionally + * setfiles/setfiles.c: fix resulting warning + * restorecon/restorecon.c: Likewise + * run_init/open_init_pty.c: argc hasn't been checked, the program would crash if +called without parameters. ignore the return value of nice properly. + * run_init: don't link with -ldl lutil + * load_policy: that's the bad bug. pointer to unsigned int is passed, size_t is +written to. fails on 64-bit archs + * sestatus: signed vs unsigned problem + * newrole: don't link with -ldl + +* Sat Feb 19 2005 Dan Walsh 1.21.18-1 +- Update to latest from NSA + * Changed load_policy to fall back to the original policy upon + an error from sepol_genusers(). + +* Thu Feb 17 2005 Dan Walsh 1.21.17-2 +- Only restorecon on ext[23], reiser and xfs + +* Thu Feb 17 2005 Dan Walsh 1.21.17-1 +- Update to latest from NSA + * Merged new genhomedircon script from Dan Walsh. + * Changed load_policy to call sepol_genusers(). + +* Thu Feb 17 2005 Dan Walsh 1.21.15-9 +- Remove Red Hat rhpl usage +- Add back in original syntax +- Update man page to match new syntax + +* Fri Feb 11 2005 Dan Walsh 1.21.15-8 +- Fix genhomedircon regular expression +- Fix exclude in restorecon + +* Thu Feb 10 2005 Dan Walsh 1.21.15-5 +- Trap failure on write +- Rewrite genhomedircon to generate file_context.homedirs +- several passes + +* Thu Feb 10 2005 Dan Walsh 1.21.15-1 +- Update from NSA + * Changed relabel Makefile target to use restorecon. + +* Wed Feb 9 2005 Dan Walsh 1.21.14-1 +- Update from NSA + * Merged restorecon patch from Dan Walsh. + +* Tue Feb 8 2005 Dan Walsh 1.21.13-1 +- Update from NSA + * Merged further change to fixfiles -C from Dan Walsh. + * Merged updated fixfiles script from Dan Walsh. +- Fix error handling of restorecon + + +* Mon Feb 7 2005 Dan Walsh 1.21.12-2 +- Fix sestatus for longer booleans + +* Wed Feb 2 2005 Dan Walsh 1.21.12-1 +- More cleanup of fixfiles sed patch + * Merged further patches for restorecon/setfiles -e and fixfiles -C. + +* Wed Feb 2 2005 Dan Walsh 1.21.10-2 +- More cleanup of fixfiles sed patch + +* Mon Jan 31 2005 Dan Walsh 1.21.10-1 +- More cleanup of fixfiles sed patch +- Upgrade to latest from NSA + * Merged patch for open_init_pty from Manoj Srivastava. + +* Fri Jan 28 2005 Dan Walsh 1.21.9-1 +- More cleanup of sed patch +- Upgrade to latest from NSA + * Merged updated fixfiles script from Dan Walsh. + * Merged updated man page for fixfiles from Dan Walsh and re-added unzipped. + * Reverted fixfiles patch for file_contexts.local; + obsoleted by setfiles rewrite. + * Merged error handling patch for restorecon from Dan Walsh. + * Merged semi raw mode for open_init_pty helper from Manoj Srivastava. + * Rewrote setfiles to use matchpathcon and the new interfaces + exported by libselinux (>= 1.21.5). + + +* Fri Jan 28 2005 Dan Walsh 1.21.7-3 +- Fix fixfiles patch +- Upgrade to latest from NSA + * Prevent overflow of spec array in setfiles. +- Add diff comparason between file_contexts to fixfiles +- Allow restorecon to give an warning on file not found instead of exiting + +* Thu Jan 27 2005 Dan Walsh 1.21.5-1 +- Upgrade to latest from NSA + * Merged newrole -l support from Darrel Goeddel (TCS). +- Fix genhomedircon STARTING_UID + +* Wed Jan 26 2005 Dan Walsh 1.21.4-1 +- Upgrade to latest from NSA + * Merged fixfiles patch for file_contexts.local from Dan Walsh. + +* Fri Jan 21 2005 Dan Walsh 1.21.3-2 +- Temp file needs to be created in /etc/selinux/POLICYTYPE/contexts/files/ directory. + +* Fri Jan 21 2005 Dan Walsh 1.21.3-1 +- Upgrade to latest from NSA + * Fixed restorecon to not treat errors from is_context_customizable() + as a customizable context. + * Merged setfiles/restorecon patch to not reset user field unless + -F option is specified from Dan Walsh. + * Merged open_init_pty helper for run_init from Manoj Srivastava. + * Merged audit2allow and genhomedircon man pages from Manoj Srivastava. + +* Fri Jan 21 2005 Dan Walsh 1.21.1-3 +- Don't change user componant if it is all that changed unless forced. +- Change fixfiles to concatinate file_context.local for setfiles + +* Thu Jan 20 2005 Dan Walsh 1.21.1-1 +- Update to latest from NSA + +* Mon Jan 10 2005 Dan Walsh 1.20.1-2 +- Fix restorecon segfault + +* Mon Jan 3 2005 Dan Walsh 1.20.1-1 +- Update to latest from NSA + * Merged fixfiles rewrite from Dan Walsh. + * Merged restorecon patch from Dan Walsh. + +* Mon Jan 3 2005 Dan Walsh 1.19.3-1 +- Update to latest from NSA + * Merged fixfiles and restorecon patches from Dan Walsh. + * Don't display change if only user part changed. + +* Mon Jan 3 2005 Dan Walsh 1.19.2-4 +- Fix fixfiles handling of rpm +- Fix restorecon to not warn on symlinks unless -v -v +- Fix output of verbose to show old context as well as new context + +* Wed Dec 29 2004 Dan Walsh 1.19.2-1 +- Update to latest from NSA + * Changed restorecon to ignore ENOENT errors from matchpathcon. + * Merged nonls patch from Chris PeBenito. + +* Mon Dec 20 2004 Dan Walsh 1.19.1-1 +- Update to latest from NSA + * Removed fixfiles.cron. + * Merged run_init.8 patch from Dan Walsh. + +* Thu Nov 18 2004 Dan Walsh 1.18.1-3 +- Fix run_init.8 to refer to correct location of initrc_context + +* Wed Nov 3 2004 Dan Walsh 1.18.1-1 +- Upgrade to latest from NSA + +* Wed Oct 27 2004 Steve Grubb 1.17.7-3 +- Add code to sestatus to output the current policy from config file + +* Fri Oct 22 2004 Dan Walsh 1.17.7-2 +- Patch audit2allow to return self and no brackets if only one rule + +* Fri Oct 22 2004 Dan Walsh 1.17.7-1 +- Update to latest from NSA +- Eliminate fixfiles.cron + +* Tue Oct 12 2004 Dan Walsh 1.17.6-2 +- Only run fixfiles.cron once a week, and eliminate null message + +* Fri Oct 1 2004 Dan Walsh 1.17.6-1 +- Update with NSA + * Added -l option to setfiles to log changes via syslog. + * Merged -e option to setfiles to exclude directories. + * Merged -R option to restorecon for recursive descent. +* Fri Oct 1 2004 Dan Walsh 1.17.5-6 +- Add -e (exclude directory) switch to setfiles +- Add syslog to setfiles + +* Fri Sep 24 2004 Dan Walsh 1.17.5-5 +- Add -R (recursive) switch to restorecon. + +* Thu Sep 23 2004 Dan Walsh 1.17.5-4 +- Change to only display to terminal if tty is specified + +* Tue Sep 21 2004 Dan Walsh 1.17.5-3 +- Only display to stdout if logfile not specified + +* Thu Sep 9 2004 Dan Walsh 1.17.5-2 +- Add Steve Grubb patch to cleanup log files. + +* Mon Aug 30 2004 Dan Walsh 1.17.5-1 +- Add optargs +- Update to match NSA + +* Wed Aug 25 2004 Dan Walsh 1.17.4-1 +- Add fix to get cdrom info from /proc/media in fixfiles. + +* Wed Aug 25 2004 Dan Walsh 1.17.3-4 +- Add Steve Grub patches for + * Fix fixfiles.cron MAILTO + * Several problems in sestatus + +* Wed Aug 25 2004 Dan Walsh 1.17.3-3 +- Add -q (quiet) qualifier to load_policy to not report warnings + +* Tue Aug 24 2004 Dan Walsh 1.17.3-2 +- Add requires for libsepol >= 1.1.1 + +* Tue Aug 24 2004 Dan Walsh 1.17.3-1 +- Update to latest from upstream + +* Mon Aug 23 2004 Dan Walsh 1.17.2-1 +- Update to latest from upstream +- Includes Colin patch for verifying file_contexts + +* Sun Aug 22 2004 Dan Walsh 1.17.1-1 +- Update to latest from upstream + +* Mon Aug 16 2004 Dan Walsh 1.15.7-1 +- Update to latest from upstream + +* Thu Aug 12 2004 Dan Walsh 1.15.6-1 +- Add Man page for load_policy + +* Tue Aug 10 2004 Dan Walsh 1.15.5-1 +- new version from NSA uses libsepol + +* Mon Aug 2 2004 Dan Walsh 1.15.3-2 +- Fix genhomedircon join command + +* Thu Jul 29 2004 Dan Walsh 1.15.3-1 +- Latest from NSA + +* Mon Jul 26 2004 Dan Walsh 1.15.2-4 +- Change fixfiles to not change when running a check + +* Tue Jul 20 2004 Dan Walsh 1.15.2-3 +- Fix restorecon getopt call to stop hang on IBM Arches + +* Mon Jul 19 2004 Dan Walsh 1.15.2-2 +- Only mail files less than 100 lines from fixfiles.cron +- Add Russell's fix for genhomedircon + +* Fri Jul 16 2004 Dan Walsh 1.15.2-1 +- Latest from NSA + +* Thu Jul 8 2004 Dan Walsh 1.15.1-2 +- Add ro warnings + +* Thu Jul 8 2004 Dan Walsh 1.15.1-1 +- Latest from NSA +- Fix fixfiles.cron to delete outfile + +* Tue Jul 6 2004 Dan Walsh 1.14.1-2 +- Fix fixfiles.cron to not run on non SELinux boxes +- Fix several problems in fixfiles and fixfiles.cron + +* Wed Jun 30 2004 Dan Walsh 1.14.1-1 +- Update from NSA +- Add cron capability to fixfiles + +* Fri Jun 25 2004 Dan Walsh 1.13.4-1 +- Update from NSA + +* Thu Jun 24 2004 Dan Walsh 1.13.3-2 +- Fix fixfiles to handle no rpm file on relabel + +* Wed Jun 23 2004 Dan Walsh 1.13.3-1 +- Update latest from NSA +- Add -o option to setfiles to save output of any files with incorrect context. + +* Tue Jun 22 2004 Dan Walsh 1.13.2-2 +- Add rpm support to fixfiles +- Update restorecon to add file input support + +* Fri Jun 18 2004 Dan Walsh 1.13.2-1 +- Update with NSA Latest + +* Tue Jun 15 2004 Elliot Lee +- rebuilt + +* Sat Jun 12 2004 Dan Walsh 1.13.1-2 +- Fix run_init to use policy formats + +* Wed Jun 2 2004 Dan Walsh 1.13.1-1 +- Update from NSA + +* Tue May 25 2004 Dan Walsh 1.13-3 +- Change location of file_context file + +* Tue May 25 2004 Dan Walsh 1.13-2 +- Change to use /etc/sysconfig/selinux to determine location of policy files + +* Fri May 21 2004 Dan Walsh 1.13-1 +- Update to latest from NSA +- Change fixfiles to prompt before deleteing /tmp files + +* Tue May 18 2004 Dan Walsh 1.12-2 +- have restorecon ingnore <> +- Hand matchpathcon the file status + +* Thu May 13 2004 Dan Walsh 1.12-1 +- Update to match NSA + +* Mon May 10 2004 Dan Walsh 1.11-4 +- Move location of log file to /var/tmp + +* Mon May 10 2004 Dan Walsh 1.11-3 +- Better grep command for bind + +* Fri May 7 2004 Dan Walsh 1.11-2 +- Eliminate bind and context mounts + +* Wed May 5 2004 Dan Walsh 1.11-1 +- update to match NSA + +* Wed Apr 28 2004 Dan Walsh 1.10-4 +- Log fixfiles to the /tmp directory + +* Wed Apr 21 2004 Colin Walters 1.10-3 +- Add patch to fall back to authenticating via uid if + the current user's SELinux user identity is the default + identity +- Add BuildRequires pam-devel + +* Mon Apr 12 2004 Dan Walsh 1.10-2 +- Add man page, thanks to Richard Halley + +* Thu Apr 8 2004 Dan Walsh 1.10-1 +- Upgrade to latest from NSA + +* Fri Apr 2 2004 Dan Walsh 1.9.2-1 +- Update with latest from gentoo and NSA + +* Thu Apr 1 2004 Dan Walsh 1.9.1-1 +- Check return codes in sestatus.c + +* Mon Mar 29 2004 Dan Walsh 1.9-19 +- Fix sestatus to not double free +- Fix sestatus.conf to be unix format + +* Mon Mar 29 2004 Dan Walsh 1.9-18 +- Warn on setfiles failure to relabel. + +* Mon Mar 29 2004 Dan Walsh 1.9-17 +- Updated version of sestatus + +* Mon Mar 29 2004 Dan Walsh 1.9-16 +- Fix fixfiles to checklabel properly + +* Fri Mar 26 2004 Dan Walsh 1.9-15 +- add sestatus + +* Thu Mar 25 2004 Dan Walsh 1.9-14 +- Change free call to freecon +- Cleanup + +* Tue Mar 23 2004 Dan Walsh 1.9-12 +- Remove setfiles-assoc patch +- Fix restorecon to not crash on missing dir + +* Thu Mar 18 2004 Dan Walsh 1.9-11 +- Eliminate trailing / in restorecon + +* Thu Mar 18 2004 Dan Walsh 1.9-10 +- Add Verbosity check + +* Thu Mar 18 2004 Dan Walsh 1.9-9 +- Change restorecon to not follow symlinks. It is too difficult and confusing +- to figure out the file context for the file pointed to by a symlink. + +* Wed Mar 17 2004 Dan Walsh 1.9-8 +- Fix restorecon +* Wed Mar 17 2004 Dan Walsh 1.9-7 +- Read restorecon patch + +* Wed Mar 17 2004 Dan Walsh 1.9-6 +- Change genhomedircon to take POLICYSOURCEDIR from command line + +* Wed Mar 17 2004 Dan Walsh 1.9-5 +- Add checkselinux +- move fixfiles and restorecon to /sbin + +* Wed Mar 17 2004 Dan Walsh 1.9-4 +- Restore patch of genhomedircon + +* Mon Mar 15 2004 Dan Walsh 1.9-3 +- Add setfiles-assoc patch to try to freeup memory use + +* Mon Mar 15 2004 Dan Walsh 1.9-2 +- Add fixlabels + +* Mon Mar 15 2004 Dan Walsh 1.9-1 +- Update to latest from NSA + +* Wed Mar 10 2004 Dan Walsh 1.6-8 +- Increase the size of buffer accepted by setfiles to BUFSIZ. + +* Tue Mar 9 2004 Dan Walsh 1.6-7 +- genhomedircon should complete even if it can't read /etc/default/useradd + +* Tue Mar 9 2004 Dan Walsh 1.6-6 +- fix restorecon to relabel unlabled files. + +* Fri Mar 5 2004 Dan Walsh 1.6-5 +- Add genhomedircon from tresys +- Fixed patch for restorecon + +* Thu Feb 26 2004 Dan Walsh 1.6-4 +- exit out when selinux is not enabled + +* Thu Feb 26 2004 Dan Walsh 1.6-3 +- Fix minor bugs in restorecon + +* Thu Feb 26 2004 Dan Walsh 1.6-2 +- Add restorecon c program + +* Tue Feb 24 2004 Dan Walsh 1.6-1 +- Update to latest tarball from NSA + +* Thu Feb 19 2004 Dan Walsh 1.4-9 +- Add sort patch + +* Fri Feb 13 2004 Elliot Lee +- rebuilt + +* Thu Jan 29 2004 Dan Walsh 1.4-7 +- remove mods to run_init since init scripts don't require it anymore + +* Wed Jan 28 2004 Dan Walsh 1.4-6 +- fix genhomedircon not to return and error + +* Wed Jan 28 2004 Dan Walsh 1.4-5 +- add setfiles quiet patch + +* Tue Jan 27 2004 Dan Walsh 1.4-4 +- add checkcon to verify context match file_context + +* Wed Jan 7 2004 Dan Walsh 1.4-3 +- fix command parsing restorecon + +* Tue Jan 6 2004 Dan Walsh 1.4-2 +- Add restorecon + +* Sat Dec 6 2003 Dan Walsh 1.4-1 +- Update to latest NSA 1.4 + +* Tue Nov 25 2003 Dan Walsh 1.2-9 +- Change run_init.console to run as run_init_t + +* Tue Oct 14 2003 Dan Walsh 1.2-8 +- Remove dietcc since load_policy is not in mkinitrd +- Change to use CONSOLEHELPER flag + +* Tue Oct 14 2003 Dan Walsh 1.2-7 +- Don't authenticate run_init when used with consolehelper + +* Wed Oct 01 2003 Dan Walsh 1.2-6 +- Add run_init consolehelper link + +* Wed Sep 24 2003 Dan Walsh 1.2-5 +- Add russell spead up patch to deal with file path stems + +* Fri Sep 12 2003 Dan Walsh 1.2-4 +- Build load_policy with diet gcc in order to save space on initrd + +* Fri Sep 12 2003 Dan Walsh 1.2-3 +- Update with NSA latest + +* Thu Aug 7 2003 Dan Walsh 1.2-1 +- remove i18n +- Temp remove gtk support + +* Thu Aug 7 2003 Dan Walsh 1.1-4 +- Remove wnck requirement + +* Thu Aug 7 2003 Dan Walsh 1.1-3 +- Add gtk support to run_init + +* Tue Aug 5 2003 Dan Walsh 1.1-2 +- Add internationalization + +* Mon Jun 2 2003 Dan Walsh 1.0-1 +- Initial version