KEYS: Make request_key() and co. return an error for a negative key
authorDavid Howells <dhowells@redhat.com>
Fri, 11 Mar 2011 17:57:33 +0000 (17:57 +0000)
committerJames Morris <jmorris@namei.org>
Thu, 17 Mar 2011 00:59:49 +0000 (11:59 +1100)
commit4aab1e896a0a9d57420ff2867caa5a369123d8cb
tree92212870353a9493c10fb46a0dd9b6ce27230012
parent78b7280cce23293f7570ad52c1ffe1485c6d9669
KEYS: Make request_key() and co. return an error for a negative key

Make request_key() and co. return an error for a negative or rejected key.  If
the key was simply negated, then return ENOKEY, otherwise return the error
with which it was rejected.

Without this patch, the following command returns a key number (with the latest
keyutils):

[root@andromeda ~]# keyctl request2 user debug:foo rejected @s
586569904

Trying to print the key merely gets you a permission denied error:

[root@andromeda ~]# keyctl print 586569904
keyctl_read_alloc: Permission denied

Doing another request_key() call does get you the error, as long as it hasn't
expired yet:

[root@andromeda ~]# keyctl request user debug:foo
request_key: Key was rejected by service

Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: James Morris <jmorris@namei.org>
security/keys/keyctl.c