diff --git a/services/param/adapter/param_selinux.c b/services/param/adapter/param_selinux.c index 9ef455cafe0d403689fd0418f7b4520f0a5d191a..3ffc2386b69a9cf71e68d6cf3a1ea75a20868005 100644 --- a/services/param/adapter/param_selinux.c +++ b/services/param/adapter/param_selinux.c @@ -26,8 +26,10 @@ #ifdef __aarch64__ #define CHECKER_LIB_NAME "/system/lib64/libparaperm_checker.z.so" +#define CHECKER_UPDATER_LIB_NAME "/lib64/libparaperm_checker.z.so" #else #define CHECKER_LIB_NAME "/system/lib/libparaperm_checker.z.so" +#define CHECKER_UPDATER_LIB_NAME "/lib/libparaperm_checker.z.so" #endif static SelinuxSpace g_selinuxSpace = {0}; @@ -41,7 +43,8 @@ static int InitLocalSecurityLabel(ParamSecurityLabel *security, int isInit) security->flags[PARAM_SECURITY_SELINUX] = 0; #if !(defined STARTUP_INIT_TEST || defined LOCAL_TEST) if (g_selinuxSpace.selinuxHandle == NULL) { - g_selinuxSpace.selinuxHandle = dlopen(CHECKER_LIB_NAME, RTLD_LAZY); + const char *libname = (InUpdaterMode() == 1) ? CHECKER_UPDATER_LIB_NAME : CHECKER_LIB_NAME; + g_selinuxSpace.selinuxHandle = dlopen(libname, RTLD_LAZY); PARAM_CHECK(g_selinuxSpace.selinuxHandle != NULL, return -1, "Failed to dlsym selinuxHandle, %s", dlerror()); }