Skip to content

Commit

Permalink
Bluetooth: Do not include LE SC out-of-band data if not enabled
Browse files Browse the repository at this point in the history
In case LE Secure Connections is not enabled, then the command for
returning local out-of-band data should not include the confirmation
and random value for LE SC pairing. All other fields are still valid,
but these two need to be left out. In that case it is also no needed
to generate the public/private key pair for out-of-band pairing.

Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
  • Loading branch information
Marcel Holtmann authored and Johan Hedberg committed Mar 16, 2015
1 parent b880ab8 commit 5082a59
Showing 1 changed file with 13 additions and 8 deletions.
21 changes: 13 additions & 8 deletions net/bluetooth/mgmt.c
Original file line number Diff line number Diff line change
Expand Up @@ -6327,12 +6327,13 @@ static int read_local_oob_ext_data(struct sock *sk, struct hci_dev *hdev,
hdev->dev_class, 3);
break;
case (BIT(BDADDR_LE_PUBLIC) | BIT(BDADDR_LE_RANDOM)):
if (smp_generate_oob(hdev, hash, rand) < 0) {
if (hci_dev_test_flag(hdev, HCI_SC_ENABLED) &&
smp_generate_oob(hdev, hash, rand) < 0) {
hci_dev_unlock(hdev);
err = mgmt_cmd_complete(sk, hdev->id,
MGMT_OP_READ_LOCAL_OOB_EXT_DATA,
MGMT_STATUS_FAILED,
&cp->type, sizeof(cp->type));
MGMT_OP_READ_LOCAL_OOB_EXT_DATA,
MGMT_STATUS_FAILED,
&cp->type, sizeof(cp->type));
goto done;
}

Expand Down Expand Up @@ -6361,11 +6362,15 @@ static int read_local_oob_ext_data(struct sock *sk, struct hci_dev *hdev,
eir_len = eir_append_data(rp->eir, eir_len, EIR_LE_ROLE,
&role, sizeof(role));

eir_len = eir_append_data(rp->eir, eir_len, EIR_LE_SC_CONFIRM,
hash, sizeof(hash));
if (hci_dev_test_flag(hdev, HCI_SC_ENABLED)) {
eir_len = eir_append_data(rp->eir, eir_len,
EIR_LE_SC_CONFIRM,
hash, sizeof(hash));

eir_len = eir_append_data(rp->eir, eir_len, EIR_LE_SC_RANDOM,
rand, sizeof(rand));
eir_len = eir_append_data(rp->eir, eir_len,
EIR_LE_SC_RANDOM,
rand, sizeof(rand));
}

flags = get_adv_discov_flags(hdev);

Expand Down

0 comments on commit 5082a59

Please sign in to comment.