android_kernel_oneplus_msm8998/security/keys
Eric Biggers df5371592a KEYS: trusted: fix writing past end of buffer in trusted_read()
commit a3c812f7cfd80cf51e8f5b7034f7418f6beb56c1 upstream.

When calling keyctl_read() on a key of type "trusted", if the
user-supplied buffer was too small, the kernel ignored the buffer length
and just wrote past the end of the buffer, potentially corrupting
userspace memory.  Fix it by instead returning the size required, as per
the documentation for keyctl_read().

We also don't even fill the buffer at all in this case, as this is
slightly easier to implement than doing a short read, and either
behavior appears to be permitted.  It also makes it match the behavior
of the "encrypted" key type.

Fixes: d00a1c72f7 ("keys: add new trusted key-type")
Reported-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: David Howells <dhowells@redhat.com>
Reviewed-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
Reviewed-by: James Morris <james.l.morris@oracle.com>
Signed-off-by: James Morris <james.l.morris@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-11-15 17:13:11 +01:00
..
encrypted-keys KEYS: Fix race between updating and finding a negative key 2017-10-27 10:23:18 +02:00
big_key.c KEYS: Fix race between updating and finding a negative key 2017-10-27 10:23:18 +02:00
compat.c switch keyctl_instantiate_key_common() to iov_iter 2015-04-11 22:27:12 -04:00
gc.c KEYS: Fix race between updating and finding a negative key 2017-10-27 10:23:18 +02:00
internal.h KEYS: prevent creating a different user's keyrings 2017-10-05 09:41:45 +02:00
Kconfig KEYS: Make /proc/keys unconditional if CONFIG_KEYS=y 2015-01-22 22:34:32 +00:00
key.c KEYS: Fix race between updating and finding a negative key 2017-10-27 10:23:18 +02:00
keyctl.c KEYS: Fix race between updating and finding a negative key 2017-10-27 10:23:18 +02:00
keyring.c KEYS: return full count in keyring_read() if buffer is too small 2017-11-08 10:06:27 +01:00
Makefile
permission.c KEYS: Move the flags representing required permission to linux/key.h 2014-03-14 17:44:49 +00:00
persistent.c KEYS: Move the flags representing required permission to linux/key.h 2014-03-14 17:44:49 +00:00
proc.c KEYS: Fix race between updating and finding a negative key 2017-10-27 10:23:18 +02:00
process_keys.c KEYS: Fix race between updating and finding a negative key 2017-10-27 10:23:18 +02:00
request_key.c KEYS: Fix race between updating and finding a negative key 2017-10-27 10:23:18 +02:00
request_key_auth.c KEYS: Fix race between updating and finding a negative key 2017-10-27 10:23:18 +02:00
sysctl.c security: Convert use of typedef ctl_table to struct ctl_table 2014-04-15 13:39:58 +10:00
trusted.c KEYS: trusted: fix writing past end of buffer in trusted_read() 2017-11-15 17:13:11 +01:00
trusted.h keys, trusted: move struct trusted_key_options to trusted-type.h 2015-10-19 01:01:21 +02:00
user_defined.c KEYS: Fix race between updating and finding a negative key 2017-10-27 10:23:18 +02:00