Bluetooth: Require SSP enabling before BR/EDR Secure Connections
authorMarcel Holtmann <marcel@holtmann.org>
Thu, 22 Jan 2015 19:15:22 +0000 (11:15 -0800)
committerJohan Hedberg <johan.hedberg@intel.com>
Thu, 22 Jan 2015 19:44:20 +0000 (21:44 +0200)
When BR/EDR is supported by a controller, then it is required to enable
Secure Simple Pairing first before enabling the Secure Connections
feature.

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

index e86b8d9105e99cb4e6f102e38a94018bf0511314..41e30055bae879c148ff8488622c5abf30c8d03c 100644 (file)
@@ -4758,6 +4758,11 @@ static int set_secure_conn(struct sock *sk, struct hci_dev *hdev,
                return cmd_status(sk, hdev->id, MGMT_OP_SET_SECURE_CONN,
                                  MGMT_STATUS_NOT_SUPPORTED);
 
+       if (test_bit(HCI_BREDR_ENABLED, &hdev->dev_flags) &&
+           !test_bit(HCI_SSP_ENABLED, &hdev->dev_flags))
+               return cmd_status(sk, hdev->id, MGMT_OP_SET_SECURE_CONN,
+                                 MGMT_STATUS_REJECTED);
+
        if (cp->val != 0x00 && cp->val != 0x01 && cp->val != 0x02)
                return cmd_status(sk, hdev->id, MGMT_OP_SET_SECURE_CONN,
                                  MGMT_STATUS_INVALID_PARAMS);