Skip to content

Commit

Permalink
Bluetooth: Fix properly ignoring LTKs of unknown types
Browse files Browse the repository at this point in the history
In case there are new LTK types in the future we shouldn't just blindly
assume that != MGMT_LTK_UNAUTHENTICATED means that the key is
authenticated. This patch adds explicit checks for each allowed key type
in the form of a switch statement and skips any key which has an unknown
value.

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Cc: stable@vger.kernel.org
  • Loading branch information
Johan Hedberg authored and Marcel Holtmann committed May 31, 2014
1 parent 3abb56d commit 61b4335
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions net/bluetooth/mgmt.c
Original file line number Diff line number Diff line change
Expand Up @@ -4546,10 +4546,16 @@ static int load_long_term_keys(struct sock *sk, struct hci_dev *hdev,
else
type = HCI_SMP_LTK_SLAVE;

if (key->type == MGMT_LTK_UNAUTHENTICATED)
switch (key->type) {
case MGMT_LTK_UNAUTHENTICATED:
authenticated = 0x00;
else
break;
case MGMT_LTK_AUTHENTICATED:
authenticated = 0x01;
break;
default:
continue;
}

hci_add_ltk(hdev, &key->addr.bdaddr, addr_type, type,
authenticated, key->val, key->enc_size, key->ediv,
Expand Down

0 comments on commit 61b4335

Please sign in to comment.