Bluetooth: Add support for adding remote OOB data for LE
authorJohan Hedberg <johan.hedberg@intel.com>
Sun, 26 Oct 2014 19:52:27 +0000 (20:52 +0100)
committerMarcel Holtmann <marcel@holtmann.org>
Wed, 3 Dec 2014 15:51:21 +0000 (16:51 +0100)
This patch adds proper support for passing LE OOB data to the
hci_add_remote_oob_data() function. For LE the 192-bit values are not
valid and should therefore be passed as NULL values.

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

index 57de9f7222aa20939b4a82b4985ecc478a6709fe..1e73bead7dd930d5bbce318f175b9d7c4bb7bd2f 100644 (file)
@@ -3610,6 +3610,7 @@ static int add_remote_oob_data(struct sock *sk, struct hci_dev *hdev,
                                   status, &cp->addr, sizeof(cp->addr));
        } else if (len == MGMT_ADD_REMOTE_OOB_EXT_DATA_SIZE) {
                struct mgmt_cp_add_remote_oob_ext_data *cp = data;
+               u8 *rand192, *hash192;
                u8 status;
 
                if (cp->addr.type != BDADDR_BREDR) {
@@ -3620,10 +3621,17 @@ static int add_remote_oob_data(struct sock *sk, struct hci_dev *hdev,
                        goto unlock;
                }
 
+               if (bdaddr_type_is_le(cp->addr.type)) {
+                       rand192 = NULL;
+                       hash192 = NULL;
+               } else {
+                       rand192 = cp->rand192;
+                       hash192 = cp->hash192;
+               }
+
                err = hci_add_remote_oob_data(hdev, &cp->addr.bdaddr,
-                                             cp->addr.type, cp->hash192,
-                                             cp->rand192, cp->hash256,
-                                             cp->rand256);
+                                             cp->addr.type, hash192, rand192,
+                                             cp->hash256, cp->rand256);
                if (err < 0)
                        status = MGMT_STATUS_FAILED;
                else