# ==============================================
# Policy File of /vendor/bin/mnld Executable File

# ==============================================
# Type Declaration
# ==============================================
type mnld, domain;
type mnld_exec, exec_type, file_type, vendor_file_type;
typeattribute mnld mlstrustedsubject;

# ==============================================
# Common SEPolicy Rule
# ==============================================
# STOPSHIP: Permissive is not allowed. CTS violation!
init_daemon_domain(mnld)

net_domain(mnld)

# Purpose : For communicate with AGPSD by socket
allow mnld agpsd_data_file:dir create_dir_perms;
allow mnld agpsd_data_file:sock_file create_file_perms;
allow mnld mtk_agpsd:unix_dgram_socket sendto;
allow mnld sysfs_wake_lock:file rw_file_perms;

# Purpose : For access NVRAM data
allow mnld nvram_data_file:dir create_dir_perms;
allow mnld nvram_data_file:file create_file_perms;
allow mnld nvram_data_file:lnk_file r_file_perms;
allow mnld nvdata_file:lnk_file r_file_perms;
allow mnld nvram_device:blk_file rw_file_perms;
allow mnld nvram_device:chr_file rw_file_perms;
allow mnld nvdata_file:dir create_dir_perms;
allow mnld nvdata_file:file create_file_perms;
allow mnld gsi_metadata_file:dir search;

# Purpose : For access kernel device
allow mnld mnld_data_file:dir rw_dir_perms;
allow mnld mnld_data_file:sock_file create_file_perms;
allow mnld mnld_device:chr_file rw_file_perms;
allow mnld stpgps_device:chr_file rw_file_perms;
allow mnld gps2scp_device:chr_file rw_file_perms;
allow mnld gps_pwr_device:chr_file rw_file_perms;
allow mnld mnld_data_file:file create_file_perms;
allow mnld mnld_data_file:fifo_file create_file_perms;
allow mnld gps_emi_device:chr_file rw_file_perms;

# Purpose : For init process
allow mnld init:udp_socket rw_socket_perms_no_ioctl;

# Purpose : For RTKSDK
allow mnld proc_net:file r_file_perms;
allow mnld gps_data_file:sock_file create_file_perms;

# Send the message to the LBS HIDL Service to forward to applications
allow mnld lbs_hidl_service:unix_dgram_socket sendto;

# Send the message to the merged hal Service to forward to applications
allow mnld merged_hal_service:unix_dgram_socket sendto;

# Purpose : For access system data
allow mnld block_device:dir search;
set_prop(mnld, vendor_mtk_mnld_prop)
allow mnld mdlog_device:chr_file rw_file_perms;
allow mnld self:capability fsetid;
allow mnld stpbt_device:chr_file rw_file_perms;
allow mnld gpsdl_device:chr_file rw_file_perms;
allow mnld ttyGS_device:chr_file rw_file_perms;

# Purpose : For file system operations
allow mnld sdcard_type:dir create_dir_perms;
allow mnld sdcard_type:file create_file_perms;
allow mnld tmpfs:lnk_file create_file_perms;
allow mnld mtd_device:dir search;
allow mnld mnt_user_file:lnk_file r_file_perms;
allow mnld mnt_user_file:dir search;
allow mnld gps_data_file:dir { create_dir_perms unlink };
allow mnld gps_data_file:file create_file_perms;
allow mnld gps_data_file:lnk_file r_file_perms;

allow mnld storage_file:lnk_file r_file_perms;

# Date : WK15.30
# Operation : Migration
# Purpose : for device bring up, not to block early migration/sanity
allow mnld proc_lk_env:file rw_file_perms;

# For HIDL, communicate mtk_hal_gnss instead of system_server
allow mnld mtk_hal_gnss:unix_dgram_socket sendto;

# Purpose : MPE sensor HIDL policy
hwbinder_use(mnld)
binder_call(mnld, system_server)
allow mnld fwk_sensor_hwservice:hwservice_manager find;
get_prop(mnld, hwservicemanager_prop)

allow mnld mnt_vendor_file:dir search;

#get waks_alarm timer create prop
allow mnld mnld:capability2 wake_alarm;

# Date : WK18.26
# Purpose : for atci gps test
allow mnld atci_service:unix_dgram_socket sendto;

allow mnld sysfs_boot_mode:file r_file_perms;

set_prop(mnld, vendor_mtk_radio_prop)

allow mnld proc_cmdline:file r_file_perms;
allow mnld sysfs_dt_firmware_android:dir search;
allow mnld sysfs_dt_firmware_android:file r_file_perms;
allow mnld metadata_file:dir search;

#for mnld get screen on/off
allow mnld sysfs_leds:dir search;
allow mnld sysfs_leds:file r_file_perms;

#Add for /nvcfg/almanac.dat
allow mnld nvcfg_file:dir w_dir_perms;
allow mnld nvcfg_file:file create_file_perms;
