Merge "Move persistent data to /data/vendor."
diff --git a/sepolicy/file.te b/sepolicy/file.te
index 4032940..cd52e7c 100644
--- a/sepolicy/file.te
+++ b/sepolicy/file.te
@@ -17,6 +17,7 @@
type sensor_vendor_data_file, file_type, data_file_type, mlstrustedobject;
type cnss_vendor_data_file, file_type, data_file_type, mlstrustedobject;
type ramdump_vendor_data_file, file_type, data_file_type, mlstrustedobject;
+type mediadrm_vendor_data_file, file_type, data_file_type;
# /sys
type sysfs_camera, sysfs_type, fs_type;
diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts
index 60fd33b..423a0eb 100644
--- a/sepolicy/file_contexts
+++ b/sepolicy/file_contexts
@@ -80,6 +80,7 @@
# files in /system
/system/bin/preloads_copy\.sh u:object_r:preloads_copy_exec:s0
+/system/bin/move_widevine_data\.sh u:object_r:move-widevine-data-sh_exec:s0
# files in /vendor
/vendor/bin/qsee_logger u:object_r:qsee_logger_exec:s0
@@ -187,6 +188,7 @@
/data/vendor/camera(/.*)? u:object_r:camera_vendor_data_file:s0
/data/vendor/audio(/.*)? u:object_r:audio_vendor_data_file:s0
+/data/vendor/mediadrm(/.*)? u:object_r:mediadrm_vendor_data_file:s0
# /
diff --git a/sepolicy/hal_drm_default.te b/sepolicy/hal_drm_default.te
index a98d0cd..e0a3914 100644
--- a/sepolicy/hal_drm_default.te
+++ b/sepolicy/hal_drm_default.te
@@ -8,9 +8,3 @@
allow hal_drm_default perfd_data_file:dir search;
allow hal_drm_default perfd:unix_stream_socket connectto;
allow hal_drm_default perfd_data_file:sock_file write;
-
-# TODO(b/36601695): Remove data_between_core_and_vendor violators once
-# hal_drm no longer directly accesses media_data_file.
-typeattribute hal_drm_default data_between_core_and_vendor_violators;
-allow hal_drm_default media_data_file:dir create_dir_perms;
-allow hal_drm_default media_data_file:file create_file_perms;
diff --git a/sepolicy/hal_drm_widevine.te b/sepolicy/hal_drm_widevine.te
index 1ba3cb1..ff93ec5 100644
--- a/sepolicy/hal_drm_widevine.te
+++ b/sepolicy/hal_drm_widevine.te
@@ -14,12 +14,6 @@
allow hal_drm_widevine qdisplay_service:service_manager { find };
binder_call(hal_drm_widevine, hal_graphics_composer)
-# TODO(b/36601695): Remove data_between_core_and_vendor violators once
-# hal_drm no longer directly accesses media_data_file.
-typeattribute hal_drm_widevine data_between_core_and_vendor_violators;
-allow hal_drm_widevine media_data_file:dir create_dir_perms;
-allow hal_drm_widevine media_data_file:file create_file_perms;
-
allow hal_drm_widevine hal_allocator_server:fd use;
# TODO(b/71584763): Remove perfd use once QC implements a better method
@@ -27,3 +21,5 @@
allow hal_drm_widevine perfd_data_file:dir search;
allow hal_drm_widevine perfd_data_file:sock_file write;
+allow hal_drm_widevine mediadrm_vendor_data_file:dir create_dir_perms;
+allow hal_drm_widevine mediadrm_vendor_data_file:file create_file_perms;
diff --git a/sepolicy/move-widevine-data-sh.te b/sepolicy/move-widevine-data-sh.te
new file mode 100644
index 0000000..e2541e5
--- /dev/null
+++ b/sepolicy/move-widevine-data-sh.te
@@ -0,0 +1,18 @@
+type move-widevine-data-sh, domain, coredomain;
+type move-widevine-data-sh_exec, exec_type, file_type;
+init_daemon_domain(move-widevine-data-sh);
+
+typeattribute move-widevine-data-sh data_between_core_and_vendor_violators;
+
+allow move-widevine-data-sh shell_exec:file rx_file_perms;
+allow move-widevine-data-sh toolbox_exec:file rx_file_perms;
+
+allow move-widevine-data-sh file_contexts_file:file { read getattr open };
+
+allow move-widevine-data-sh media_data_file:file { getattr setattr relabelfrom };
+allow move-widevine-data-sh media_data_file:dir { reparent rename rmdir setattr rw_dir_perms relabelfrom };
+
+allow move-widevine-data-sh mediadrm_vendor_data_file:dir { create_dir_perms relabelto };
+
+# for writing files_moved so we only execute the move once
+allow move-widevine-data-sh mediadrm_vendor_data_file:file { create open write getattr relabelto };