Bluetooth: Ignore IRKs with no Identity Address
[deliverable/linux.git] / net / bluetooth / smp.c
index 79a80f44c832d8afba4c6d5e299edbe6d451f1ca..50355d045992375dd701c3266d46c5d941fc62cc 100644 (file)
@@ -1003,6 +1003,19 @@ static int smp_cmd_ident_addr_info(struct l2cap_conn *conn,
 
        skb_pull(skb, sizeof(*info));
 
+       /* Strictly speaking the Core Specification (4.1) allows sending
+        * an empty address which would force us to rely on just the IRK
+        * as "identity information". However, since such
+        * implementations are not known of and in order to not over
+        * complicate our implementation, simply pretend that we never
+        * received an IRK for such a device.
+        */
+       if (!bacmp(&info->bdaddr, BDADDR_ANY)) {
+               BT_ERR("Ignoring IRK with no identity address");
+               smp_distribute_keys(conn, 1);
+               return 0;
+       }
+
        bacpy(&smp->id_addr, &info->bdaddr);
        smp->id_addr_type = info->addr_type;
 
This page took 0.026322 seconds and 5 git commands to generate.