summaryrefslogtreecommitdiffstats
path: root/net/bluetooth/l2cap_sock.c
diff options
context:
space:
mode:
authorJohan Hedberg <johan.hedberg@intel.com>2014-01-29 00:16:49 +0100
committerJohan Hedberg <johan.hedberg@intel.com>2014-02-13 08:51:38 +0100
commitb783fbc3a55691f978b9f78d552a0d7e7d2705ad (patch)
treeebbe9231aef608fc1defd19342824d94ebcaa286 /net/bluetooth/l2cap_sock.c
parentBluetooth: Free up l2cap_chan->sport when initiating a connection (diff)
downloadlinux-b783fbc3a55691f978b9f78d552a0d7e7d2705ad.tar.xz
linux-b783fbc3a55691f978b9f78d552a0d7e7d2705ad.zip
Bluetooth: Refuse peer L2CAP address reading when not connected
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>
Diffstat (limited to 'net/bluetooth/l2cap_sock.c')
-rw-r--r--net/bluetooth/l2cap_sock.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c
index ae4f6b593fc0..b0aaa651a5ba 100644
--- a/net/bluetooth/l2cap_sock.c
+++ b/net/bluetooth/l2cap_sock.c
@@ -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);