security: Add a cred_getsecid hook
For IMA purposes, we want to be able to obtain the prepared secid in the bprm structure before the credentials are committed. Add a cred_getsecid hook that makes this possible. Signed-off-by: Matthew Garrett <mjg59@google.com> Acked-by: Paul Moore <paul@paul-moore.com> Cc: Paul Moore <paul@paul-moore.com> Cc: Stephen Smalley <sds@tycho.nsa.gov> Cc: Casey Schaufler <casey@schaufler-ca.com> Signed-off-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
This commit is contained in:
@@ -2049,6 +2049,23 @@ static void smack_cred_transfer(struct cred *new, const struct cred *old)
|
||||
/* cbs copy rule list */
|
||||
}
|
||||
|
||||
/**
|
||||
* smack_cred_getsecid - get the secid corresponding to a creds structure
|
||||
* @c: the object creds
|
||||
* @secid: where to put the result
|
||||
*
|
||||
* Sets the secid to contain a u32 version of the smack label.
|
||||
*/
|
||||
static void smack_cred_getsecid(const struct cred *c, u32 *secid)
|
||||
{
|
||||
struct smack_known *skp;
|
||||
|
||||
rcu_read_lock();
|
||||
skp = smk_of_task(c->security);
|
||||
*secid = skp->smk_secid;
|
||||
rcu_read_unlock();
|
||||
}
|
||||
|
||||
/**
|
||||
* smack_kernel_act_as - Set the subjective context in a set of credentials
|
||||
* @new: points to the set of credentials to be modified.
|
||||
@@ -4733,6 +4750,7 @@ static struct security_hook_list smack_hooks[] __lsm_ro_after_init = {
|
||||
LSM_HOOK_INIT(cred_free, smack_cred_free),
|
||||
LSM_HOOK_INIT(cred_prepare, smack_cred_prepare),
|
||||
LSM_HOOK_INIT(cred_transfer, smack_cred_transfer),
|
||||
LSM_HOOK_INIT(cred_getsecid, smack_cred_getsecid),
|
||||
LSM_HOOK_INIT(kernel_act_as, smack_kernel_act_as),
|
||||
LSM_HOOK_INIT(kernel_create_files_as, smack_kernel_create_files_as),
|
||||
LSM_HOOK_INIT(task_setpgid, smack_task_setpgid),
|
||||
|
Reference in New Issue
Block a user