summaryrefslogtreecommitdiff
path: root/scripts/paxcheck.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/paxcheck.sh')
-rwxr-xr-xscripts/paxcheck.sh44
1 files changed, 44 insertions, 0 deletions
diff --git a/scripts/paxcheck.sh b/scripts/paxcheck.sh
new file mode 100755
index 000000000000..87e817500b1b
--- /dev/null
+++ b/scripts/paxcheck.sh
@@ -0,0 +1,44 @@
+#!/bin/sh
+
+# shellcheck disable=SC2039
+if ! type scanelf > /dev/null 2>&1; then
+ echo "scanelf (from pax-utils) is required for these checks." >&2
+ exit 3
+fi
+
+RET=0
+
+# check for exec stacks
+OUT=$(scanelf -qyRAF '%e %p' "$1")
+
+if [ x"${OUT}" != x ]; then
+ RET=2
+ echo "The following files contain writable and executable sections"
+ echo " Files with such sections will not work properly (or at all!) on some"
+ echo " architectures/operating systems."
+ echo " For more information, see:"
+ echo " https://wiki.gentoo.org/wiki/Hardened/GNU_stack_quickstart"
+ echo
+ echo "${OUT}"
+ echo
+fi
+
+
+# check for TEXTRELS
+OUT=$(scanelf -qyRAF '%T %p' "$1")
+
+if [ x"${OUT}" != x ]; then
+ RET=2
+ echo "The following files contain runtime text relocations"
+ echo " Text relocations force the dynamic linker to perform extra"
+ echo " work at startup, waste system resources, and may pose a security"
+ echo " risk. On some architectures, the code may not even function"
+ echo " properly, if at all."
+ echo " For more information, see:"
+ echo " https://wiki.gentoo.org/wiki/Hardened/HOWTO_locate_and_fix_textrels"
+ echo
+ echo "${OUT}"
+ echo
+fi
+
+exit $RET