Skip to content

Commit

Permalink
Smack: getting the Smack security context of keys
Browse files Browse the repository at this point in the history
With this commit, the LSM Smack implements the LSM
side part of the system call keyctl with the action
code KEYCTL_GET_SECURITY.

It is now possible to get the context of, for example,
the user session key using the command "keyctl security @s".

The original patch has been modified for merge.

Signed-off-by: José Bollo <[email protected]>
Signed-off-by: Casey Schaufler <[email protected]>
  • Loading branch information
José Bollo authored and cschaufler committed Mar 23, 2015
1 parent 7412301 commit 7fc5f36
Showing 1 changed file with 31 additions and 0 deletions.
31 changes: 31 additions & 0 deletions security/smack/smack_lsm.c
Original file line number Diff line number Diff line change
Expand Up @@ -4000,6 +4000,36 @@ static int smack_key_permission(key_ref_t key_ref,
rc = smk_bu_note("key access", tkp, keyp->security, request, rc);
return rc;
}

/*
* smack_key_getsecurity - Smack label tagging the key
* @key points to the key to be queried
* @_buffer points to a pointer that should be set to point to the
* resulting string (if no label or an error occurs).
* Return the length of the string (including terminating NUL) or -ve if
* an error.
* May also return 0 (and a NULL buffer pointer) if there is no label.
*/
static int smack_key_getsecurity(struct key *key, char **_buffer)
{
struct smack_known *skp = key->security;
size_t length;
char *copy;

if (key->security == NULL) {
*_buffer = NULL;
return 0;
}

copy = kstrdup(skp->smk_known, GFP_KERNEL);
if (copy == NULL)
return -ENOMEM;
length = strlen(copy) + 1;

*_buffer = copy;
return length;
}

#endif /* CONFIG_KEYS */

/*
Expand Down Expand Up @@ -4324,6 +4354,7 @@ struct security_operations smack_ops = {
.key_alloc = smack_key_alloc,
.key_free = smack_key_free,
.key_permission = smack_key_permission,
.key_getsecurity = smack_key_getsecurity,
#endif /* CONFIG_KEYS */

/* Audit hooks */
Expand Down

0 comments on commit 7fc5f36

Please sign in to comment.