2 # This file contains functions that are used in multiple other scripts, i.e.
3 # shared functions. The purpose of centralising these, is to deduplicate code
4 # and increase maintainability
6 # By Dennis Groenen <tj.groenen@gmail.com>
12 if test $VERBOSE == 1; then
16 # Detect the current environment
18 if test -d /scratchbox; then
21 if test -e /proc/component_version; then
22 PROD=$($EXECPWR cat /proc/component_version | $EXECPWR grep product | $EXECPWR cut -d" " -f 6)
24 PROD=$(/usr/bin/sysinfoclient --get /component/product | $EXECPWR awk '{ print $3 }')
29 ENVIRONMENT="FREMANTLE"
32 ENVIRONMENT="HARMATTAN"
35 echo "busybox-power: unsupported environment: $PROD"
42 # Check whether the user is root
44 if test "`$EXECPWR id -u`" -ne 0; then
45 echo "error: you're not running me as root"
50 # Get the version string of the package providing /bin/busybox
52 # XXX We assume the package "busybox" provides /bin/busybox
53 /usr/bin/dpkg -s busybox | $EXECPWR awk '/^Version:/ {print $2}'
56 # Get the enforcement status of aegis' source origin check. Returns "1" when
57 # the check is active, otherwise "0"
58 GETORIGINCHECK_STATUS() {
59 ENFORCE="/sys/kernel/security/validator/enforce"
60 ENFORCE_HEX=`$EXECPWR cat $ENFORCE`
63 if test "$ENFORCE_HEX" == ""; then exit 1; fi
65 if test `echo $(($ENFORCE_HEX & $SID_CHECK_BIT))` -eq 0; then
71 # Set the enforcement status of aegis' source origin check. The check will be
72 # enabled when passed "1"; passing "0" will disable it.
73 # Works in both normal and open mode via aegisctl, and in patched open mode via
74 # via writing to sysfs entries directly
75 SETORIGINCHECK_STATUS() {
78 ENFORCE="/sys/kernel/security/validator/enforce"
79 ENFORCE_HEX=`$EXECPWR cat $ENFORCE`
82 if test $ENABLE -gt 0; then
83 if test `GETORIGINCHECK_STATUS` -eq 1; then return; fi # Already on
84 ENFORCE_NEW_DEC=`echo $(($ENFORCE_HEX | $SID_CHECK_BIT))`
85 ENFORCE_NEW_HEX=`printf "0x%02x" $ENFORCE_NEW_DEC`
86 echo $ENFORCE_NEW_HEX > $ENFORCE 2> /dev/null
87 if test $? -gt 0; then
88 # Do not exit 1 on failure to re-enable the origincheck; not fatal for
89 # (un)installation of busybox-power
90 /usr/sbin/aegisctl +s > /dev/null
93 if test `GETORIGINCHECK_STATUS` -eq 0; then return; fi # Already off
94 ENFORCE_NEW_DEC=`echo $(($ENFORCE_HEX ^ $SID_CHECK_BIT))`
95 ENFORCE_NEW_HEX=`printf "0x%02x" $ENFORCE_NEW_DEC`
96 echo $ENFORCE_NEW_HEX > $ENFORCE 2> /dev/null
97 if test $? -gt 0; then
98 /usr/sbin/aegisctl @s > /dev/null || exit 1
102 ECHO_VERBOSE "new origincheck: $ENABLE ($ENFORCE_NEW_HEX)"