diff --git a/kernel/allowlist.c b/kernel/allowlist.c index 4fbba9355949..443ce4306a64 100644 --- a/kernel/allowlist.c +++ b/kernel/allowlist.c @@ -1,3 +1,4 @@ +#include #include #include #include @@ -64,12 +65,14 @@ static void remove_uid_from_arr(uid_t uid) static void init_default_profiles() { + kernel_cap_t full_cap = CAP_FULL_SET; + default_root_profile.uid = 0; default_root_profile.gid = 0; default_root_profile.groups_count = 1; default_root_profile.groups[0] = 0; - memset(&default_root_profile.capabilities, 0xff, - sizeof(default_root_profile.capabilities)); + memcpy(&default_root_profile.capabilities.effective, &full_cap, + sizeof(default_root_profile.capabilities.effective)); default_root_profile.namespaces = 0; strcpy(default_root_profile.selinux_domain, KSU_DEFAULT_SELINUX_DOMAIN); diff --git a/kernel/core_hook.c b/kernel/core_hook.c index 9a8e774c9413..32b8f8e39113 100644 --- a/kernel/core_hook.c +++ b/kernel/core_hook.c @@ -166,14 +166,10 @@ void escape_to_root(void) profile->capabilities.effective | CAP_DAC_READ_SEARCH; memcpy(&cred->cap_effective, &cap_for_ksud, sizeof(cred->cap_effective)); - memcpy(&cred->cap_inheritable, &profile->capabilities.effective, - sizeof(cred->cap_inheritable)); memcpy(&cred->cap_permitted, &profile->capabilities.effective, sizeof(cred->cap_permitted)); memcpy(&cred->cap_bset, &profile->capabilities.effective, sizeof(cred->cap_bset)); - memcpy(&cred->cap_ambient, &profile->capabilities.effective, - sizeof(cred->cap_ambient)); setup_groups(profile, cred);