This is the upstream repository for the Security Enhanced Linux (SELinux) userland libraries and tools. The software provided by this project complements the SELinux features integrated into the Linux kernel and is used by Linux distributions. All bugs an
Go to file
Alan Jenkins 3475893b6f policycoreutils: fixfiles: refactor into the set -u dialect
This commit allows the use of `set -u` to detect reads of unset variables.
But what I really liked was making the code more explicit about these
modes.  I hope that this is easier for a new reader to reason about.

`fixfiles restore` has accumulated five different modes it can run in.
Now use a single variable to indicate the mode, out-of-band of the
variables used for the individual modes.

Apparently `set -u` / `set -o nounset` doesn't work correctly with arrays.
If we ever need bash arrays, we can simply remove `set -u`.  The `set -u`
dialect is a strict subset.  See http://mywiki.wooledge.org/BashFAQ/112

Extra notes:

RESTORE_MODE was created because I couldn't bring myself to use an empty
FILEPATH, as a special case to indicate the default mode.  Arguments
to the script (paths) could be empty already, so it would mean I had to
work out how we behaved in that case and decide whether it was reasonable.

It turns out the `-B | -N time` mode is distinct and does not respect
paths.  So we can tell the user we're not going to do anything with the
paths they passed.  Make sure this distinction is shown in the usage error
message.

We already rejected the combination of `-R rpmpackage,... dir/file...`.
Being aware of the different modes just causes more bogus combinations
to be rejected.

Signed-off-by: Alan Jenkins <alan.christopher.jenkins@gmail.com>
2017-05-09 14:47:21 -04:00
checkpolicy Add attribute expansion options 2017-05-09 12:09:46 -04:00
dbus dbus: Use text streams in selinux_server.py 2017-05-05 11:52:19 -04:00
gui sepolicy: Adapt to new the semodule list output 2017-05-05 11:52:19 -04:00
libselinux libselinux: Fix CFLAGS definition 2017-05-09 10:47:39 -04:00
libsemanage Makefiles: drop -L/-I to system paths 2017-04-25 08:27:05 -04:00
libsepol Add attribute expansion options 2017-05-09 12:09:46 -04:00
mcstrans Makefiles: drop -L/-I to system paths 2017-04-25 08:27:05 -04:00
policycoreutils policycoreutils: fixfiles: refactor into the set -u dialect 2017-05-09 14:47:21 -04:00
python sepolicy/gui: Update text strings to use better gettext templates 2017-05-05 11:52:19 -04:00
restorecond restorecond: get pcre cflags/libs from pkg-config 2017-04-25 08:27:44 -04:00
sandbox Makefiles: drop -L/-I to system paths 2017-04-25 08:27:05 -04:00
scripts Fix release script 2016-11-16 11:19:51 -05:00
secilc Makefiles: drop -L/-I to system paths 2017-04-25 08:27:05 -04:00
semodule-utils Makefiles: drop -L/-I to system paths 2017-04-25 08:27:05 -04:00
.gitignore restorecond: Add gitignore 2016-11-16 11:20:05 -05:00
.travis.yml libsemanage/tests: include libsepol headers from $DESTDIR 2017-03-01 10:42:34 -05:00
CleanSpec.mk Add empty top level Android.mk / CleanSpec.mk files 2015-04-16 07:54:09 -04:00
Makefile Add includes for DESTDIR only in root Makefile 2017-04-25 08:31:10 -04:00
README libsepol compilation fixes for macOS. 2017-01-20 13:19:57 -05:00

Please submit all bug reports and patches to selinux@tycho.nsa.gov.
Subscribe via selinux-join@tycho.nsa.gov.

Build dependencies on Fedora:
yum install audit-libs-devel bison bzip2-devel dbus-devel dbus-glib-devel flex flex-devel flex-static glib2-devel libcap-devel libcap-ng-devel pam-devel pcre-devel python-devel setools-devel swig xmlto redhat-rpm-config

To build and install everything under a private directory, run:
make DESTDIR=~/obj install install-pywrap

To install as the default system libraries and binaries
(overwriting any previously installed ones - dangerous!),
on x86_64, run:
make LIBDIR=/usr/lib64 SHLIBDIR=/lib64 install install-pywrap relabel
or on x86 (32-bit), run:
make install install-pywrap relabel

This may render your system unusable if the upstream SELinux userspace
lacks library functions or other dependencies relied upon by your
distribution.  If it breaks, you get to keep both pieces.

To install libsepol on macOS (mainly for policy analysis):
cd libsepol; make DESTDIR=/usr/local PREFIX=/usr/local install

This requires GNU coreutils (brew install coreutils).