diff options
author | Johan Hedberg <johan.hedberg@intel.com> | 2012-01-18 13:27:44 +0200 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@intel.com> | 2012-01-18 13:27:44 +0200 |
commit | 4edfc65cc08bbc0d56d6bdcd458d978ca9057323 (patch) | |
tree | 57d23209935ba9d92e759b7acdaec0c92930febf /plugins | |
parent | 4548e3a6b21bbc185dd8284e128751ce87d108ae (diff) | |
download | bluez-4edfc65cc08bbc0d56d6bdcd458d978ca9057323.tar.gz |
mgmt: Update mgmt_ev_device_found to match latest API
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/mgmtops.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/plugins/mgmtops.c b/plugins/mgmtops.c index c931985d2..e7e9d5e08 100644 --- a/plugins/mgmtops.c +++ b/plugins/mgmtops.c @@ -1276,11 +1276,18 @@ static void mgmt_device_found(int sk, uint16_t index, void *buf, size_t len) struct mgmt_ev_device_found *ev = buf; struct controller_info *info; char addr[18]; + uint16_t eir_len; uint8_t *eir; - if (len != sizeof(*ev)) { + if (len < sizeof(*ev)) { + error("mgmt_device_found too short (%zu bytes)", len); + return; + } + + eir_len = bt_get_le16(&ev->eir_len); + if (len != sizeof(*ev) + eir_len) { error("mgmt_device_found length %zu instead of expected %zu", - len, sizeof(*ev)); + len, sizeof(*ev) + eir_len); return; } @@ -1291,19 +1298,19 @@ static void mgmt_device_found(int sk, uint16_t index, void *buf, size_t len) info = &controllers[index]; - if (ev->eir[0] == 0) + if (eir_len == 0) eir = NULL; else eir = ev->eir; ba2str(&ev->addr.bdaddr, addr); - DBG("hci%u addr %s, rssi %d cfm_name %u %s", index, addr, ev->rssi, - ev->confirm_name, eir ? "eir" : ""); + DBG("hci%u addr %s, rssi %d cfm_name %u eir_len %u", index, addr, ev->rssi, + ev->confirm_name, eir_len); btd_event_device_found(&info->bdaddr, &ev->addr.bdaddr, mgmt_addr_type(ev->addr.type), ev->rssi, ev->confirm_name, - eir, HCI_MAX_EIR_LENGTH); + eir, eir_len); } static void mgmt_discovering(int sk, uint16_t index, void *buf, size_t len) |