Skip to content

Commit

Permalink
KEYS: Don't permit request_key() to construct a new keyring
Browse files Browse the repository at this point in the history
If request_key() is used to find a keyring, only do the search part - don't
do the construction part if the keyring was not found by the search.  We
don't really want keyrings in the negative instantiated state since the
rejected/negative instantiation error value in the payload is unioned with
keyring metadata.

Now the kernel gives an error:

	request_key("keyring", "#selinux,bdekeyring", "keyring", KEY_SPEC_USER_SESSION_KEYRING) = -1 EPERM (Operation not permitted)

Signed-off-by: David Howells <[email protected]>
  • Loading branch information
dhowells committed Oct 19, 2015
1 parent f05819d commit 911b79c
Showing 1 changed file with 3 additions and 0 deletions.
3 changes: 3 additions & 0 deletions security/keys/request_key.c
Original file line number Diff line number Diff line change
Expand Up @@ -440,6 +440,9 @@ static struct key *construct_key_and_link(struct keyring_search_context *ctx,

kenter("");

if (ctx->index_key.type == &key_type_keyring)
return ERR_PTR(-EPERM);

user = key_user_lookup(current_fsuid());
if (!user)
return ERR_PTR(-ENOMEM);
Expand Down

0 comments on commit 911b79c

Please sign in to comment.