From 7e67b8266268dde84711740bceb373c4c271f3eb Mon Sep 17 00:00:00 2001 From: Claudio Takahasi Date: Thu, 5 Oct 2006 13:59:31 +0000 Subject: added verification for hci_devid return value --- hcid/dbus.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/hcid/dbus.c b/hcid/dbus.c index 7230d14e..689ce46f 100644 --- a/hcid/dbus.c +++ b/hcid/dbus.c @@ -763,10 +763,17 @@ void hcid_dbus_pending_pin_req_add(bdaddr_t *sba, bdaddr_t *dba) char path[MAX_PATH_LENGTH], addr[18]; struct adapter *adapter; struct pending_pin_info *info; + int id; ba2str(sba, addr); - snprintf(path, sizeof(path), "%s/hci%d", BASE_PATH, hci_devid(addr)); + id = hci_devid(addr); + if (id < 0) { + error("No matching device id for %s", addr); + return; + } + + snprintf(path, sizeof(path), "%s/hci%d", BASE_PATH, id); if (!dbus_connection_get_object_path_data(connection, path, (void *) &adapter)) { error("Getting %s path data failed!", path); @@ -790,10 +797,17 @@ void hcid_dbus_pending_pin_req_add(bdaddr_t *sba, bdaddr_t *dba) int hcid_dbus_request_pin(int dev, bdaddr_t *sba, struct hci_conn_info *ci) { char path[MAX_PATH_LENGTH], addr[18]; + int id; ba2str(sba, addr); - snprintf(path, sizeof(path), "%s/hci%d", BASE_PATH, hci_devid(addr)); + id = hci_devid(addr); + if (id < 0) { + error("No matching device id for %s", addr); + return -1; + } + + snprintf(path, sizeof(path), "%s/hci%d", BASE_PATH, id); return handle_passkey_request(connection, dev, path, sba, &ci->bdaddr); } -- cgit