diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2022-08-02 15:12:13 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2022-08-02 15:12:13 -0700 |
commit | 87fe1adb66a514fa3abbe8bdb4278a5b2f421d8b (patch) | |
tree | 7ccabb83cbf8b72b05aaadc19286f5a01545fecb /kernel | |
parent | ea7099d5229c0fe9f9302b03a246e15e78b87011 (diff) | |
parent | 64b634830c919979de4b18163e15d30df66e64a8 (diff) | |
download | lwn-87fe1adb66a514fa3abbe8bdb4278a5b2f421d8b.tar.gz lwn-87fe1adb66a514fa3abbe8bdb4278a5b2f421d8b.zip |
Merge tag 'safesetid-6.0' of https://github.com/micah-morton/linux
Pull SafeSetID updates from Micah Morton:
"This contains one commit that touches common kernel code, one that
adds functionality internal to the SafeSetID LSM code, and a few other
commits that only modify the SafeSetID LSM selftest.
The commit that touches common kernel code simply adds an LSM hook in
the setgroups() syscall that mirrors what is done for the existing LSM
hooks in the setuid() and setgid() syscalls. This commit combined with
the SafeSetID-specific one allow the LSM to filter setgroups() calls
according to configured rule sets in the same way that is already done
for setuid() and setgid()"
* tag 'safesetid-6.0' of https://github.com/micah-morton/linux:
LSM: SafeSetID: add setgroups() testing to selftest
LSM: SafeSetID: Add setgroups() security policy handling
security: Add LSM hook to setgroups() syscall
LSM: SafeSetID: add GID testing to selftest
LSM: SafeSetID: selftest cleanup and prepare for GIDs
LSM: SafeSetID: fix userns bug in selftest
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/groups.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/kernel/groups.c b/kernel/groups.c index 787b381c7c00..9aaed2a31073 100644 --- a/kernel/groups.c +++ b/kernel/groups.c @@ -134,13 +134,26 @@ EXPORT_SYMBOL(set_groups); int set_current_groups(struct group_info *group_info) { struct cred *new; + const struct cred *old; + int retval; new = prepare_creds(); if (!new) return -ENOMEM; + old = current_cred(); + set_groups(new, group_info); + + retval = security_task_fix_setgroups(new, old); + if (retval < 0) + goto error; + return commit_creds(new); + +error: + abort_creds(new); + return retval; } EXPORT_SYMBOL(set_current_groups); |