rxrpc: Fix several cases where a padded len isn't checked in ticket decode
authorDavid Howells <dhowells@redhat.com>
Wed, 14 Jun 2017 23:12:24 +0000 (00:12 +0100)
committerBen Hutchings <ben@decadent.org.uk>
Tue, 19 Sep 2017 01:34:05 +0000 (02:34 +0100)
commit2ba52f202cf2f848ff27c9e151cc14a6c9346152
treef338a7bfcbaf5f40784e097e8aed46290cd523dd
parent9b7dd79370cb9de3fb5d77895894e6b48b520165
rxrpc: Fix several cases where a padded len isn't checked in ticket decode

This fixes CVE-2017-7482.

When a kerberos 5 ticket is being decoded so that it can be loaded into an
rxrpc-type key, there are several places in which the length of a
variable-length field is checked to make sure that it's not going to
overrun the available data - but the data is padded to the nearest
four-byte boundary and the code doesn't check for this extra.  This could
lead to the size-remaining variable wrapping and the data pointer going
over the end of the buffer.

Fix this by making the various variable-length data checks use the padded
length.

Reported-by: 石磊 <shilei-c@360.cn>
Signed-off-by: David Howells <dhowells@redhat.com>
Reviewed-by: Marc Dionne <marc.c.dionne@auristor.com>
Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Gbp-Pq: Topic bugfix/all
Gbp-Pq: Name rxrpc-Fix-several-cases-where-a-padded-len-isn-t-che.patch
net/rxrpc/key.c