Skip to content

Commit

Permalink
Bluetooth: Set authentication requirement before requesting it
Browse files Browse the repository at this point in the history
The authentication requirement got only updated when the security level
increased. This is a wrong behavior. The authentication requirement is
read by the Bluetooth daemon to make proper decisions when handling the
IO capabilities exchange. So set the value that is currently expected by
the higher layers like L2CAP and RFCOMM.

Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
  • Loading branch information
Marcel Holtmann committed Feb 27, 2009
1 parent 00ae4af commit 96a3183
Showing 1 changed file with 4 additions and 6 deletions.
10 changes: 4 additions & 6 deletions net/bluetooth/hci_conn.c
Original file line number Diff line number Diff line change
Expand Up @@ -397,12 +397,13 @@ static int hci_conn_auth(struct hci_conn *conn, __u8 sec_level, __u8 auth_type)
{
BT_DBG("conn %p", conn);

if (sec_level > conn->sec_level) {
if (sec_level > conn->sec_level)
conn->sec_level = sec_level;
conn->auth_type = auth_type;
} else if (conn->link_mode & HCI_LM_AUTH)
else if (conn->link_mode & HCI_LM_AUTH)
return 1;

conn->auth_type = auth_type;

if (!test_and_set_bit(HCI_CONN_AUTH_PEND, &conn->pend)) {
struct hci_cp_auth_requested cp;
cp.handle = cpu_to_le16(conn->handle);
Expand All @@ -418,9 +419,6 @@ int hci_conn_security(struct hci_conn *conn, __u8 sec_level, __u8 auth_type)
{
BT_DBG("conn %p", conn);

if (conn->auth_type == 0xff)
conn->auth_type = auth_type;

if (sec_level == BT_SECURITY_SDP)
return 1;

Expand Down

0 comments on commit 96a3183

Please sign in to comment.