Bluetooth: Refuse peer L2CAP address reading when not connected
authorJohan Hedberg <johan.hedberg@intel.com>
Tue, 28 Jan 2014 23:16:49 +0000 (15:16 -0800)
committerJohan Hedberg <johan.hedberg@intel.com>
Thu, 13 Feb 2014 07:51:38 +0000 (09:51 +0200)
When we're not connected the peer address information is undefined. This
patch fixes the remote address getting to return a proper error in case
the state is anything else than BT_CONNECTED.

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
net/bluetooth/l2cap_sock.c

index ae4f6b593fc015def2ea684220daddfbd4050fb4..b0aaa651a5ba5042cb7647f4eadbcb2c10f0e7af 100644 (file)
@@ -366,6 +366,9 @@ static int l2cap_sock_getname(struct socket *sock, struct sockaddr *addr,
 
        BT_DBG("sock %p, sk %p", sock, sk);
 
+       if (peer && sk->sk_state != BT_CONNECTED)
+               return -ENOTCONN;
+
        memset(la, 0, sizeof(struct sockaddr_l2));
        addr->sa_family = AF_BLUETOOTH;
        *len = sizeof(struct sockaddr_l2);