diff options
Diffstat (limited to 'hcid/dbus-manager.c')
-rw-r--r-- | hcid/dbus-manager.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/hcid/dbus-manager.c b/hcid/dbus-manager.c index 68c732f5..695b3112 100644 --- a/hcid/dbus-manager.c +++ b/hcid/dbus-manager.c @@ -103,6 +103,7 @@ static DBusHandlerResult find_adapter(DBusConnection *conn, { DBusMessage *reply; char path[MAX_PATH_LENGTH], *path_ptr = path; + struct hci_dev_info di; const char *pattern; int dev_id; @@ -115,6 +116,12 @@ static DBusHandlerResult find_adapter(DBusConnection *conn, if (dev_id < 0) return error_no_such_adapter(conn, msg); + if (hci_devinfo(dev_id, &di) < 0) + return error_no_such_adapter(conn, msg); + + if (hci_test_bit(HCI_RAW, &di.flags)) + return error_no_such_adapter(conn, msg); + reply = dbus_message_new_method_return(msg); if (!reply) return DBUS_HANDLER_RESULT_NEED_MEMORY; @@ -177,6 +184,9 @@ static DBusHandlerResult list_adapters(DBusConnection *conn, if (hci_devinfo(dr->dev_id, &di) < 0) continue; + if (hci_test_bit(HCI_RAW, &di.flags)) + continue; + snprintf(path, sizeof(path), "%s/%s", BASE_PATH, di.name); dbus_message_iter_append_basic(&array_iter, |