]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
selinux: Chain up tool resolving errors in install_policy.sh
authorTim Schumacher <tim.schumacher1@huawei.com>
Fri, 7 Mar 2025 09:56:43 +0000 (10:56 +0100)
committerPaul Moore <paul@paul-moore.com>
Fri, 7 Mar 2025 19:38:34 +0000 (14:38 -0500)
Subshell evaluations are not exempt from errexit, so if a command is
not available, `which` will fail and exit the script as a whole.
This causes the helpful error messages to not be printed if they are
tacked on using a `$?` comparison.

Resolve the issue by using chains of logical operators, which are not
subject to the effects of errexit.

Fixes: e37c1877ba5b1 ("scripts/selinux: modernize mdp")
Signed-off-by: Tim Schumacher <tim.schumacher1@huawei.com>
Signed-off-by: Paul Moore <paul@paul-moore.com>
scripts/selinux/install_policy.sh

index 24086793b0d8d40db6d2498b4120a73f0ff549c2..db40237e60ce7e8f40aba0d8d30148c412565d22 100755 (executable)
@@ -6,27 +6,24 @@ if [ `id -u` -ne 0 ]; then
        exit 1
 fi
 
-SF=`which setfiles`
-if [ $? -eq 1 ]; then
+SF=`which setfiles` || {
        echo "Could not find setfiles"
        echo "Do you have policycoreutils installed?"
        exit 1
-fi
+}
 
-CP=`which checkpolicy`
-if [ $? -eq 1 ]; then
+CP=`which checkpolicy` || {
        echo "Could not find checkpolicy"
        echo "Do you have checkpolicy installed?"
        exit 1
-fi
+}
 VERS=`$CP -V | awk '{print $1}'`
 
-ENABLED=`which selinuxenabled`
-if [ $? -eq 1 ]; then
+ENABLED=`which selinuxenabled` || {
        echo "Could not find selinuxenabled"
        echo "Do you have libselinux-utils installed?"
        exit 1
-fi
+}
 
 if selinuxenabled; then
     echo "SELinux is already enabled"