diff --git a/services/modules/seccomp/seccomp_policy.c b/services/modules/seccomp/seccomp_policy.c index 8d9f5b7e70ef68e25abee895cf9794c613210607..59bdae75266ab7baba7ef680ca2dfeb950018785 100644 --- a/services/modules/seccomp/seccomp_policy.c +++ b/services/modules/seccomp/seccomp_policy.c @@ -34,8 +34,10 @@ #ifdef __aarch64__ #define FILTER_LIB_PATH_FORMAT "/system/lib64/lib%s_filter.z.so" +#define FILTER_LIB_PATH_HEAD "/system/lib64/lib" #else #define FILTER_LIB_PATH_FORMAT "/system/lib/lib%s_filter.z.so" +#define FILTER_LIB_PATH_HEAD "/system/lib/lib" #endif #define FILTER_NAME_FORMAT "g_%sSeccompFilter" #define FILTER_SIZE_STRING "Size" @@ -114,6 +116,10 @@ static int GetSeccompPolicy(const char *filterName, int **handler, return INPUT_ERROR; } + if (strncmp(filterLibRealPath, FILTER_LIB_PATH_HEAD, strlen(FILTER_LIB_PATH_HEAD))) { + return INPUT_ERROR; + } + char filterVaribleName[PATH_MAX] = {0}; struct sock_filter *filter = NULL; size_t *filterSize = NULL;