summaryrefslogtreecommitdiffstats
path: root/src/security.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/security.c')
-rw-r--r--src/security.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/security.c b/src/security.c
index 267cd27e..1ab952ae 100644
--- a/src/security.c
+++ b/src/security.c
@@ -341,10 +341,16 @@ static void link_key_notify(int dev, bdaddr_t *sba, void *ptr)
bdaddr_t *dba = &evt->bdaddr;
char sa[18], da[18];
int dev_id, err;
+ unsigned char old_key[16];
+ uint8_t old_key_type;
ba2str(sba, sa); ba2str(dba, da);
info("link_key_notify (sba=%s, dba=%s)", sa, da);
+ err = read_link_key(sba, dba, old_key, &old_key_type);
+ if (err < 0)
+ old_key_type = 0xFF;
+
dev_id = hci_devid(sa);
err = write_link_key(sba, dba, evt->link_key, evt->key_type,
@@ -367,7 +373,7 @@ static void link_key_notify(int dev, bdaddr_t *sba, void *ptr)
DISCONNECT_CP_SIZE, &cp);
}
} else
- hcid_dbus_link_key_notify(sba, dba);
+ hcid_dbus_link_key_notify(sba, dba, evt->key_type, old_key_type);
io_data[dev_id].pin_length = -1;
}