Enable qcril db in angler

Enable pre built qcril db on angler
This db will contain the custom emergency numbers

[   72.739594] init: Service radio-sh does not have a SELinux domain
defined.

[   10.766726] type=1400 audit(31933229.150:6): avc: denied { search }
for pid=563 comm="init.radio.sh" name="radio" dev="dm-1" ino=4079624
scontext=u:r:init-radio-sh:s0 tcontext=u:object_r:radio_data_file:s0
tclass=dir permissive=0

[   72.950256] type=1400 audit(31933766.836:6): avc: denied { write }
for pid=597 comm="cp" name="radio" dev="dm-1" ino=4079624
scontext=u:r:init-radio-sh:s0 tcontext=u:object_r:radio_data_file:s0
tclass=dir permissive=0

[   71.945441] type=1400 audit(31934841.890:6): avc: denied { getattr }
for pid=584 comm="init.radio.sh" path="/system/bin/sh" dev="dm-0"
ino=489 scontext=u:r:init-radio-sh:s0 tcontext=u:object_r:shell_exec:s0
tclass=file permissive=0

[   11.330693] type=1400 audit(31935225.246:7): avc: denied { getattr }
for pid=558 comm="init.radio.sh" path="/system/bin/toybox" dev="dm-0"
ino=521 scontext=u:r:init-radio-sh:s0
tcontext=u:object_r:toolbox_exec:s0 tclass=file permissive=0

[   73.562786] type=1400 audit(31935678.370:6): avc: denied { create }
for pid=591 comm="cp" name="qcril.db" scontext=u:r:init-radio-sh:s0
tcontext=u:object_r:radio_data_file:s0 tclass=file permissive=0

[   73.594002] type=1400 audit(31935678.393:7): avc: denied { write }
for pid=575 comm="init.radio.sh" name="db_check_done" dev="dm-1"
ino=4079657 scontext=u:r:init-radio-sh:s0
tcontext=u:object_r:radio_data_file:s0 tclass=file permissive=0

Test: verified that updated numbers are available after image update
BUG=31815511
Change-Id: I81169c2da46d9b2b4481d39a5672421a603db406
diff --git a/device.mk b/device.mk
index 83e6c9d..41ffa67 100644
--- a/device.mk
+++ b/device.mk
@@ -51,6 +51,9 @@
 PRODUCT_COPY_FILES += \
     device/huawei/angler/init.mcfg.sh:system/bin/init.mcfg.sh
 
+PRODUCT_COPY_FILES += \
+    device/huawei/angler/init.radio.sh:system/bin/init.radio.sh
+
 # Thermal configuration
 PRODUCT_COPY_FILES += \
     device/huawei/angler/thermal-engine-angler.conf:system/etc/thermal-engine.conf
diff --git a/init.angler.rc b/init.angler.rc
index a928ffd..817f133 100755
--- a/init.angler.rc
+++ b/init.angler.rc
@@ -220,6 +220,14 @@
     chmod 0440 /persist/data/st_offset
     chmod 0440 /persist/data/st_xtalk
 
+    # File flags for prebuilt ril db file
+    write /data/misc/radio/prebuilt_db_support 1
+    chown radio radio /data/misc/radio/prebuilt_db_support
+    chmod 0400 /data/misc/radio/prebuilt_db_support
+    write /data/misc/radio/db_check_done 0
+    chown radio radio /data/misc/radio/db_check_done
+    chmod 0660 /data/misc/radio/db_check_done
+
     chown system system /sys/class/kgsl/kgsl-3d0/devfreq/max_freq
     chmod 0660 /sys/class/kgsl/kgsl-3d0/devfreq/max_freq
     chown system system /sys/class/kgsl/kgsl-3d0/devfreq/min_freq
@@ -457,6 +465,12 @@
    group radio system
    oneshot
 
+service radio-sh /system/bin/init.radio.sh
+    class late_start
+    user radio
+    group root radio
+    oneshot
+
 service oem_qmi_server /vendor/bin/oem_qmi_server
     class main
     user root
diff --git a/init.radio.sh b/init.radio.sh
new file mode 100755
index 0000000..8d687a1
--- /dev/null
+++ b/init.radio.sh
@@ -0,0 +1,10 @@
+#!/system/bin/sh
+
+#
+# Copy qcril.db if needed for RIL
+#
+if [ -f /vendor/qcril.db -a ! -f /data/misc/radio/qcril.db ]; then
+    cp /vendor/qcril.db /data/misc/radio/qcril.db
+    chown -h radio.radio /data/misc/radio/qcril.db
+fi
+echo 1 > /data/misc/radio/db_check_done
diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts
index 4eef661..a8a68a6 100644
--- a/sepolicy/file_contexts
+++ b/sepolicy/file_contexts
@@ -125,6 +125,7 @@
 /system/bin/init\.angler\.power\.sh      u:object_r:init-power-sh_exec:s0
 /system/bin/init\.angler\.qseecomd\.sh   u:object_r:init-angler-qseecomd-sh_exec:s0
 /system/bin/init\.mcfg\.sh               u:object_r:init-mcfg-sh_exec:s0
+/system/bin/init\.radio\.sh              u:object_r:init-radio-sh_exec:s0
 /vendor/bin/irsc_util                    u:object_r:irsc_util_exec:s0
 /vendor/bin/loc_launcher                 u:object_r:location_exec:s0
 /system/bin/location-mq                  u:object_r:location_exec:s0
diff --git a/sepolicy/init-radio-sh.te b/sepolicy/init-radio-sh.te
new file mode 100644
index 0000000..daa70c4
--- /dev/null
+++ b/sepolicy/init-radio-sh.te
@@ -0,0 +1,12 @@
+# /system/bin/init.radio.sh
+type init-radio-sh, domain;
+type init-radio-sh_exec, exec_type, file_type;
+
+init_daemon_domain(init-radio-sh)
+
+allow init-radio-sh shell_exec:file rx_file_perms;
+
+allow init-radio-sh toolbox_exec:file rx_file_perms;
+
+allow init-radio-sh radio_data_file:dir rw_dir_perms;
+allow init-radio-sh radio_data_file:file create_file_perms;