diff options
Diffstat (limited to 'net/bluetooth/smp.c')
| -rw-r--r-- | net/bluetooth/smp.c | 8 | 
1 files changed, 5 insertions, 3 deletions
diff --git a/net/bluetooth/smp.c b/net/bluetooth/smp.c index 8c225ef349c..a5923378bdf 100644 --- a/net/bluetooth/smp.c +++ b/net/bluetooth/smp.c @@ -32,6 +32,8 @@  #define SMP_TIMEOUT	msecs_to_jiffies(30000) +#define AUTH_REQ_MASK   0x07 +  static inline void swap128(u8 src[16], u8 dst[16])  {  	int i; @@ -230,7 +232,7 @@ static void build_pairing_cmd(struct l2cap_conn *conn,  		req->max_key_size = SMP_MAX_ENC_KEY_SIZE;  		req->init_key_dist = 0;  		req->resp_key_dist = dist_keys; -		req->auth_req = authreq; +		req->auth_req = (authreq & AUTH_REQ_MASK);  		return;  	} @@ -239,7 +241,7 @@ static void build_pairing_cmd(struct l2cap_conn *conn,  	rsp->max_key_size = SMP_MAX_ENC_KEY_SIZE;  	rsp->init_key_dist = 0;  	rsp->resp_key_dist = req->resp_key_dist & dist_keys; -	rsp->auth_req = authreq; +	rsp->auth_req = (authreq & AUTH_REQ_MASK);  }  static u8 check_enc_key_size(struct l2cap_conn *conn, __u8 max_key_size) @@ -265,7 +267,7 @@ static void smp_failure(struct l2cap_conn *conn, u8 reason, u8 send)  	clear_bit(HCI_CONN_ENCRYPT_PEND, &conn->hcon->flags);  	mgmt_auth_failed(conn->hcon->hdev, conn->dst, hcon->type, -			 hcon->dst_type, reason); +			 hcon->dst_type, HCI_ERROR_AUTH_FAILURE);  	cancel_delayed_work_sync(&conn->security_timer);  |