Bluetooth: Fix sending wrong authentication requirements
Until we support any pairing method (Passkey Entry, OOB) that gives MITM protection we shouldn't send that we have MITM protection. Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@openbossa.org> Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
This commit is contained in:
parent
5e762444b0
commit
0fb4eb6f63
@ -187,18 +187,6 @@ static void smp_send_cmd(struct l2cap_conn *conn, u8 code, u16 len, void *data)
|
|||||||
msecs_to_jiffies(SMP_TIMEOUT));
|
msecs_to_jiffies(SMP_TIMEOUT));
|
||||||
}
|
}
|
||||||
|
|
||||||
static __u8 seclevel_to_authreq(__u8 level)
|
|
||||||
{
|
|
||||||
switch (level) {
|
|
||||||
case BT_SECURITY_HIGH:
|
|
||||||
/* Right now we don't support bonding */
|
|
||||||
return SMP_AUTH_MITM;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return SMP_AUTH_NONE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void build_pairing_cmd(struct l2cap_conn *conn,
|
static void build_pairing_cmd(struct l2cap_conn *conn,
|
||||||
struct smp_cmd_pairing *req,
|
struct smp_cmd_pairing *req,
|
||||||
struct smp_cmd_pairing *rsp,
|
struct smp_cmd_pairing *rsp,
|
||||||
@ -542,7 +530,6 @@ int smp_conn_security(struct l2cap_conn *conn, __u8 sec_level)
|
|||||||
{
|
{
|
||||||
struct hci_conn *hcon = conn->hcon;
|
struct hci_conn *hcon = conn->hcon;
|
||||||
struct smp_chan *smp = conn->smp_chan;
|
struct smp_chan *smp = conn->smp_chan;
|
||||||
__u8 authreq;
|
|
||||||
|
|
||||||
BT_DBG("conn %p hcon %p level 0x%2.2x", conn, hcon, sec_level);
|
BT_DBG("conn %p hcon %p level 0x%2.2x", conn, hcon, sec_level);
|
||||||
|
|
||||||
@ -580,19 +567,17 @@ int smp_conn_security(struct l2cap_conn *conn, __u8 sec_level)
|
|||||||
|
|
||||||
smp = smp_chan_create(conn);
|
smp = smp_chan_create(conn);
|
||||||
|
|
||||||
authreq = seclevel_to_authreq(sec_level);
|
|
||||||
|
|
||||||
if (hcon->link_mode & HCI_LM_MASTER) {
|
if (hcon->link_mode & HCI_LM_MASTER) {
|
||||||
struct smp_cmd_pairing cp;
|
struct smp_cmd_pairing cp;
|
||||||
|
|
||||||
build_pairing_cmd(conn, &cp, NULL, authreq);
|
build_pairing_cmd(conn, &cp, NULL, SMP_AUTH_NONE);
|
||||||
smp->preq[0] = SMP_CMD_PAIRING_REQ;
|
smp->preq[0] = SMP_CMD_PAIRING_REQ;
|
||||||
memcpy(&smp->preq[1], &cp, sizeof(cp));
|
memcpy(&smp->preq[1], &cp, sizeof(cp));
|
||||||
|
|
||||||
smp_send_cmd(conn, SMP_CMD_PAIRING_REQ, sizeof(cp), &cp);
|
smp_send_cmd(conn, SMP_CMD_PAIRING_REQ, sizeof(cp), &cp);
|
||||||
} else {
|
} else {
|
||||||
struct smp_cmd_security_req cp;
|
struct smp_cmd_security_req cp;
|
||||||
cp.auth_req = authreq;
|
cp.auth_req = SMP_AUTH_NONE;
|
||||||
smp_send_cmd(conn, SMP_CMD_SECURITY_REQ, sizeof(cp), &cp);
|
smp_send_cmd(conn, SMP_CMD_SECURITY_REQ, sizeof(cp), &cp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user