Eric Biggers 49686cbbb3 NFS: reject request for id_legacy key without auxdata
nfs_idmap_legacy_upcall() is supposed to be called with 'aux' pointing
to a 'struct idmap', via the call to request_key_with_auxdata() in
nfs_idmap_request_key().

However it can also be reached via the request_key() system call in
which case 'aux' will be NULL, causing a NULL pointer dereference in
nfs_idmap_prepare_pipe_upcall(), assuming that the key description is
valid enough to get that far.

Fix this by making nfs_idmap_legacy_upcall() negate the key if no
auxdata is provided.

As usual, this bug was found by syzkaller.  A simple reproducer using
the command-line keyctl program is:

    keyctl request2 id_legacy uid:0 '' @s

Fixes: 57e62324e469 ("NFS: Store the legacy idmapper result in the keyring")
Reported-by: syzbot+5dfdbcf7b3eb5912abbb@syzkaller.appspotmail.com
Cc: <stable@vger.kernel.org> # v3.4+
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Trond Myklebust <trondmy@gmail.com>
2018-01-22 10:05:11 -05:00
..
2018-01-05 13:02:46 -08:00
2017-11-15 18:21:06 -08:00
2017-12-17 12:20:58 -08:00
2017-08-24 13:23:03 -07:00
2017-11-14 14:44:04 -08:00
2017-11-16 11:41:22 -08:00
2017-11-17 09:51:57 -08:00
2018-01-05 12:59:32 -08:00
2017-09-04 19:05:15 -04:00
2017-11-15 18:21:04 -08:00
2018-01-03 10:13:36 -08:00
2017-12-09 20:16:33 -05:00