replicant-vendor_replicant/prebuilt/common/etc/init.d/50selinuxrelabel
Ricardo Cerqueira d2d1a7ffb1 Add SELinux filesystem relabeling to init
Since not all recoveries out there will support the OTA packages'
own labeling, check at boot if the system needs labels (and
apply them)

Change-Id: I58767977b90a78a12efe7bd9d713654eadf47e7a
2013-07-17 16:48:28 +01:00

47 lines
999 B
Bash

#!/system/bin/sh
L="log -p i -t SELinuxLabel"
# Bail out early if not on a SELinux build
getprop ro.build.selinux | grep -q 1 || exit
if [ ! -f /file_contexts ]; then
exit
fi
LABELDATA=0
LABELSYS=0
# Test /data
ls -Zd /data/anr | grep -q unlabeled
if [ $? -eq 0 ]; then
$L "userdata is unlabeled, fixing..."
LABELDATA=1
fi
ls -Z /system/bin/surfaceflinger | grep -q unlabeled
if [ $? -eq 0 ]; then
$L "system is unlabeled, fixing... (You really should update your recovery)"
LABELSYS=1
fi
ls -Z /system/app/GoogleServicesFramework.apk | grep -q unlabeled
if [ $LABELSYS = "0" -a $? -eq 0 ]; then
$L "Found unlabeled Google framework, fixing..."
LABELSYS=1
fi
if [ $LABELSYS = "1" ]; then
busybox mount -o remount,rw /system
$L "/system relabel starting..."
restorecon -R /system
$L "/system relabel complete"
busybox mount -o remount,ro /system
fi
if [ $LABELDATA = "1" ]; then
$L "/data relabel starting..."
restorecon -R /data
$L "/data relabel complete"
fi