diff --git a/init/selinux.cpp b/init/selinux.cpp index 2d3e06e52..35a96f9f4 100644 --- a/init/selinux.cpp +++ b/init/selinux.cpp @@ -372,6 +372,12 @@ bool OpenSplitPolicy(PolicyFile* policy_file) { system_ext_mapping_file.clear(); } + std::string system_ext_compat_cil_file("/system_ext/etc/selinux/mapping/" + vend_plat_vers + + ".compat.cil"); + if (access(system_ext_compat_cil_file.c_str(), F_OK) == -1) { + system_ext_compat_cil_file.clear(); + } + std::string product_policy_cil_file("/product/etc/selinux/product_sepolicy.cil"); if (access(product_policy_cil_file.c_str(), F_OK) == -1) { product_policy_cil_file.clear(); @@ -426,6 +432,9 @@ bool OpenSplitPolicy(PolicyFile* policy_file) { if (!system_ext_mapping_file.empty()) { compile_args.push_back(system_ext_mapping_file.c_str()); } + if (!system_ext_compat_cil_file.empty()) { + compile_args.push_back(system_ext_compat_cil_file.c_str()); + } if (!product_policy_cil_file.empty()) { compile_args.push_back(product_policy_cil_file.c_str()); }