From ced343a52c7edf2123fc2fa8481daf8928f888ef Mon Sep 17 00:00:00 2001 From: handyohos Date: Sun, 4 Dec 2022 10:15:02 +0800 Subject: [PATCH] bugfix: setcon according to actual process name setcon according to actual process name Signed-off-by: handyohos Change-Id: I6435824ec0b97c954532993c65f9b4ca840de873 #I64HB9 --- services/modules/selinux/selinux_adp.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/services/modules/selinux/selinux_adp.c b/services/modules/selinux/selinux_adp.c index e62fc967..aa446a30 100755 --- a/services/modules/selinux/selinux_adp.c +++ b/services/modules/selinux/selinux_adp.c @@ -19,6 +19,7 @@ #include "init_hook.h" #include "init_module_engine.h" #include "plugin_adapter.h" +#include "securec.h" #include #include @@ -30,8 +31,13 @@ enum { CMD_RESTORE_INDEX = 3, }; +extern char *__progname; + static int LoadSelinuxPolicy(int id, const char *name, int argc, const char **argv) { + int ret; + char process_context[MAX_SECON_LEN]; + UNUSED(id); UNUSED(name); UNUSED(argc); @@ -44,7 +50,12 @@ static int LoadSelinuxPolicy(int id, const char *name, int argc, const char **ar PLUGIN_LOGI("main, load_policy success."); } - setcon("u:r:init:s0"); + ret = snprintf_s(process_context, sizeof(process_context), sizeof(process_context) - 1, "u:r:%s:s0", __progname); + if (ret == -1) { + setcon("u:r:init:s0"); + } else { + setcon(process_context); + } (void)RestoreconRecurse("/dev"); return 0; } -- GitLab