Commit ef301604 authored by David Howells's avatar David Howells Committed by Kamal Mostafa

KEYS: Don't permit request_key() to construct a new keyring

commit 911b79cd upstream.

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: default avatarDavid Howells <dhowells@redhat.com>
Signed-off-by: default avatarKamal Mostafa <kamal@canonical.com>
parent 4ad79b3a
...@@ -440,6 +440,9 @@ static struct key *construct_key_and_link(struct keyring_search_context *ctx, ...@@ -440,6 +440,9 @@ static struct key *construct_key_and_link(struct keyring_search_context *ctx,
kenter(""); kenter("");
if (ctx->index_key.type == &key_type_keyring)
return ERR_PTR(-EPERM);
user = key_user_lookup(current_fsuid()); user = key_user_lookup(current_fsuid());
if (!user) if (!user)
return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment