Squashed 'import-layers/meta-security/' content from commit 4d139b9

Subtree from git://git.yoctoproject.org/meta-security

Change-Id: I14bb13faa3f2b2dc1f5d81b339dd48ffedf8562f
git-subtree-dir: import-layers/meta-security
git-subtree-split: 4d139b95c4f152d132592f515c5151f4dd6269c1
Signed-off-by: Richard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com>
diff --git a/import-layers/meta-security/recipes-security/redhat-security/files/find-sh4errors.sh b/import-layers/meta-security/recipes-security/redhat-security/files/find-sh4errors.sh
new file mode 100644
index 0000000..0054a6a
--- /dev/null
+++ b/import-layers/meta-security/recipes-security/redhat-security/files/find-sh4errors.sh
@@ -0,0 +1,132 @@
+#!/bin/sh
+# find_sh4errors utility
+# Copyright (c) 2004 Steve Grubb. ALL RIGHTS RESERVED.
+# sgrubb@redhat.com
+#
+# This software may be freely redistributed under the terms of the GNU
+# public license.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+# This script will search a directory and its subdirectories for every shell
+# script. It then runs sh -n to see if bash can determine if there are obvious
+# parsing errors. It does have a bug in that bash -n does not take into 
+# account someone may program an unconditional exit and then include man page
+# generation information. It also fails to notice the exec command. When you
+# run across files that do either of the above, add it to the KNOWN_BAD list.
+
+if [ $# -ge 2 ] ; then
+	echo "Usage: find_sh4errors [directory]" 1>&2
+	exit 1
+fi
+INTERPRETERS="wish wishx tclsh guile rep itkwish expect /etc/kde/kdm/Xsession /etc/X11/xdm/Xsession /usr/bin/festival perl hfssh"
+SKIP_DIRS="/opt /home /root"
+KNOWN_BAD="/usr/bin/kde-build /usr/bin/cvsversion samples/copifuncs/copi.sendifm1 bashdb bash_completion_test"
+DIR="/"
+if [ $# -eq 1 ] ; then
+	if [ -d "$1" ] ; then
+		DIR="$1"
+	else
+		echo "Option passed in was not a directory" 1>&2
+		exit 1
+	fi
+fi
+tempfile=`mktemp /tmp/sh4.XXXXXX`
+tempfile2=`mktemp /tmp/sh4.XXXXXX`
+if [ -z "$tempfile" -o -z "$tempfile2" ] ; then
+        echo ; echo "Unable to create tempfiles...aborting." 1>&2 ; echo
+        exit 1
+fi
+trap "rm -f $tempfile; rm -f $tempfile2; exit 2" 1 2 3 5 15
+
+# Get executable files
+#echo "Locating executables..."
+/usr/bin/find $DIR -type f -perm /0111 -print >> $tempfile 2>/dev/null
+FOUND=0
+#echo "Refining list to shell scripts..."
+while read f
+do
+	# Get just the shell scripts
+	testf=`echo $f | /usr/bin/file -n -f - | egrep 'ourne|POSIX shell'`
+	if [ x"$testf" != x ] ; then
+		echo $f >> $tempfile2
+		FOUND=1
+	fi
+done < $tempfile
+/bin/rm -f $tempfile
+if [ $FOUND -eq 0 ] ; then
+	# Nothing to report, just exit
+#	echo "Examining shell scripts in $DIR"
+#	echo "No problems found"
+	/bin/rm -f $tempfile2
+	exit 0
+fi
+#echo "Examining shell scripts in $DIR"
+FOUND=0
+while read i
+do
+	# First see if the script calls an interpreter
+	SKIP=0
+	for lang in $INTERPRETERS
+	do
+		if `/bin/cat "$i" 2>/dev/null | \
+				grep "exec[ \t].*$lang" >/dev/null` ; then
+			SKIP=1
+			break
+		fi
+	done
+
+	if [ $SKIP -eq 1 ] ; then
+		continue
+	fi
+
+	# See if this is in a dir we want to ignore
+	for d in $SKIP_DIRS
+	do
+		if `echo "$i" | /bin/grep "^\$d" >/dev/null`; then
+			SKIP=1
+			break
+		fi
+	done
+
+	if [ $SKIP -eq 1 ] ; then
+		continue
+	fi
+
+	# Don't do the known naughty files
+	for bad in $KNOWN_BAD
+	do
+		if `echo "$i" | /bin/grep "$bad" >/dev/null`; then
+			SKIP=1
+			break
+		fi
+	done
+
+	if [ $SKIP -eq 1 ] ; then
+		continue
+	fi
+
+	# Now examine them for correctness
+	interp=`/usr/bin/head -n 1 "$i" | /bin/awk '{ print $1 }' | \
+							/usr/bin/tr -d '#!'`
+	if [ x"$interp" = "x" -o ! -x "$interp" ] ; then
+		interp="/bin/sh"
+	fi
+	$interp -n "$i" 2>/dev/null
+	if [ $? -ne 0 ] ; then
+		printf "%-44s" "$i"
+		rpm -qf --queryformat "%{NAME}-%{VERSION}" $i
+		echo
+		FOUND=1
+	fi
+done < $tempfile2
+/bin/rm -f $tempfile2
+if [ $FOUND -eq 0 ] ; then
+        # Nothing to report, just exit
+#        echo "No problems found"
+	exit 0
+fi
+exit 1
+