diff options
Diffstat (limited to 'security')
-rw-r--r-- | security/keys/keyctl.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/security/keys/keyctl.c b/security/keys/keyctl.c index 98c5ebc6dad6..9fc289ec0159 100644 --- a/security/keys/keyctl.c +++ b/security/keys/keyctl.c @@ -744,6 +744,11 @@ long keyctl_read_key(key_serial_t keyid, char __user *buffer, size_t buflen) key = key_ref_to_ptr(key_ref); + if (test_bit(KEY_FLAG_NEGATIVE, &key->flags)) { + ret = -ENOKEY; + goto error2; + } + /* see if we can read it directly */ ret = key_permission(key_ref, KEY_NEED_READ); if (ret == 0) |