aboutsummaryrefslogtreecommitdiffstats
path: root/net/bluetooth/rfcomm
diff options
context:
space:
mode:
authorJohan Hedberg <johan.hedberg@intel.com>2014-01-28 15:16:50 -0800
committerJohan Hedberg <johan.hedberg@intel.com>2014-02-13 09:51:39 +0200
commit35364c99d20edc7329843e2a6dad6851d77eafd7 (patch)
tree2710e8fc985f8af341fa03a2c6d86dfc75ed9433 /net/bluetooth/rfcomm
parentBluetooth: Refuse peer L2CAP address reading when not connected (diff)
downloadlinux-dev-35364c99d20edc7329843e2a6dad6851d77eafd7.tar.xz
linux-dev-35364c99d20edc7329843e2a6dad6851d77eafd7.zip
Bluetooth: Refuse peer RFCOMM 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 sate 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/rfcomm')
-rw-r--r--net/bluetooth/rfcomm/sock.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/net/bluetooth/rfcomm/sock.c b/net/bluetooth/rfcomm/sock.c
index fb8158af1f39..00573fb79030 100644
--- a/net/bluetooth/rfcomm/sock.c
+++ b/net/bluetooth/rfcomm/sock.c
@@ -528,6 +528,9 @@ static int rfcomm_sock_getname(struct socket *sock, struct sockaddr *addr, int *
BT_DBG("sock %p, sk %p", sock, sk);
+ if (peer && sk->sk_state != BT_CONNECTED)
+ return -ENOTCONN;
+
memset(sa, 0, sizeof(*sa));
sa->rc_family = AF_BLUETOOTH;
sa->rc_channel = rfcomm_pi(sk)->channel;