Bluetooth: hidp: verify l2cap sockets
authorDavid Herrmann <dh.herrmann@gmail.com>
Fri, 5 Apr 2013 12:57:34 +0000 (14:57 +0200)
committerGustavo Padovan <gustavo.padovan@collabora.co.uk>
Sat, 6 Apr 2013 02:44:14 +0000 (23:44 -0300)
commitb3916db32c4a3124eee9f3742a2f4723731d7602
tree342531410aa6985decfc173e3bf892d7b4ec47e8
parentc849edbdc2fc3a9ba37ae6810d7a1e2c92b302d7
Bluetooth: hidp: verify l2cap sockets

We need to verify that the given sockets actually are l2cap sockets. If
they aren't, we are not supposed to access bt_sk(sock) and we shouldn't
start the session if the offsets turn out to be valid local BT addresses.

That is, if someone passes a TCP socket to HIDCONNADD, then we access some
random offset in the TCP socket (which isn't even guaranteed to be valid).

Fix this by checking that the socket is an l2cap socket.

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
include/net/bluetooth/l2cap.h
net/bluetooth/hidp/core.c
net/bluetooth/l2cap_sock.c