summaryrefslogtreecommitdiffstats
path: root/recipes-security/selinux/policycoreutils/policycoreutils-fixfiles-de-bashify.patch
blob: 5dcb5e4bd52de489e23da412f52b0f32e8d6cb26 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
From 624d6231ca9daf494e33352d562ff97cb0219f2d Mon Sep 17 00:00:00 2001
From: Joe MacDonald <joe_macdonald@mentor.com>
Date: Fri, 20 Feb 2015 17:00:19 -0500
Subject: [PATCH] fixfiles: de-bashify

Most of the bashisms in fixfiles are pretty easy to work around, the only
complex one is the use of PIPESTATUS.  The common solution to this is to
use fifos but considering the action this script is performing, that's not
necessarily the best option here.  Introducing a second invocation of rpm
is minimal overhead on an operation that should happen very infrequently,
so we'll try that instead.

Upstream-Status: Inappropriate [embedded specific]

Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com>
---
 scripts/fixfiles | 23 ++++++++++++++---------
 1 file changed, 14 insertions(+), 9 deletions(-)

diff --git a/scripts/fixfiles b/scripts/fixfiles
index 166af6f..a23cdc6 100755
--- a/scripts/fixfiles
+++ b/scripts/fixfiles
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
 # fixfiles
 #
 # Script to restore labels on a SELinux box
@@ -27,7 +27,7 @@ set -o nounset
 # number if the current kernel version is greater than 2.6.30, a negative
 # number if the current is less than 2.6.30 and 0 if they are the same.
 #
-function useseclabel {
+useseclabel () {
 	VER=`uname -r`
 	SUP=2.6.30
 	expr '(' "$VER" : '\([^.]*\)' ')' '-' '(' "$SUP" : '\([^.]*\)' ')' '|' \
@@ -93,9 +93,10 @@ exclude_dirs_from_relabelling() {
 	  # skip not absolute path
 	  # skip not directory
 	  [ -z "${i}" ] && continue
-	  [[ "${i}" =~ ^[[:blank:]]*# ]] && continue
-	  [[ ! "${i}" =~ ^/.* ]] && continue
-	  [[ ! -d "${i}" ]] && continue
+	  echo "${i}" | egrep -q '^[[:space:]]*#' && continue
+	  echo "${i}" | egrep -v '^/.*' && continue
+	  [ ! -d "${i}" ] && continue
+
 	  exclude_from_relabelling="$exclude_from_relabelling -e $i"
 	done < /etc/selinux/fixfiles_exclude_dirs
     fi
@@ -140,7 +141,7 @@ fi
 # Log directories excluded from relabelling by configuration file
 #
 LogExcluded() {
-for i in ${EXCLUDEDIRS//-e / }; do
+for i in `echo ${EXCLUDEDIRS} | sed -e 's/-e / /g'`; do
     echo "skipping the directory $i"
 done
 }
@@ -203,8 +204,12 @@ fi
 }
 
 rpmlist() {
-rpm -q --qf '[%{FILESTATES} %{FILENAMES}\n]' "$1" | grep '^0 ' | cut -f2- -d ' '
-[ ${PIPESTATUS[0]} != 0 ] && echo "$1 not found" >/dev/stderr
+    if rpm -q --qf '[%{FILESTATES} %{FILENAMES}\n]' "$1" >/dev/null
+    then
+        rpm -q --qf '[%{FILESTATES} %{FILENAMES}\n]' "$1" | grep '^0 ' | cut -f2- -d ' '
+    else
+        echo "$1 not found" >/dev/stderr
+    fi
 }
 
 # unmount tmp bind mount before exit
@@ -315,7 +320,7 @@ relabel() {
 	exit 1
     fi
 
-    if [ $fullFlag == 1  ]; then
+    if [ $fullFlag = 1  ]; then
 	fullrelabel
 	return
     fi
-- 
2.25.1