linux/security/keys
Eric Biggers 97c5668c97 KEYS: return full count in keyring_read() if buffer is too small
commit 3239b6f29b upstream.

Commit e645016abc ("KEYS: fix writing past end of user-supplied buffer
in keyring_read()") made keyring_read() stop corrupting userspace memory
when the user-supplied buffer is too small.  However it also made the
return value in that case be the short buffer size rather than the size
required, yet keyctl_read() is actually documented to return the size
required.  Therefore, switch it over to the documented behavior.

Note that for now we continue to have it fill the short buffer, since it
did that before (pre-v3.13) and dump_key_tree_aux() in keyutils arguably
relies on it.

Fixes: e645016abc ("KEYS: fix writing past end of user-supplied buffer in keyring_read()")
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: 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-08 10:06:27 +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 KEYS: Add per-user_namespace registers for persistent per-UID kerberos caches 2013-09-24 10:35:19 +01:00
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_auth.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
sysctl.c security: Convert use of typedef ctl_table to struct ctl_table 2014-04-15 13:39:58 +10:00
trusted.c KEYS: Fix race between updating and finding a negative key 2017-10-27 10:23:18 +02: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