diff options
author | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2006-06-01 20:31:11 +0000 |
---|---|---|
committer | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2006-06-01 20:31:11 +0000 |
commit | 1cb7d5d359881443a53e1859c1dfbf8f947e702b (patch) | |
tree | 9104e08ddbcd590d522af6e0b4e0edeb4b473bda /hcid | |
parent | 57722c34c18e4067ebb397120156a673dfe89256 (diff) |
SetRemoteAlias:Added unknown address verification
Diffstat (limited to 'hcid')
-rw-r--r-- | hcid/dbus-adapter.c | 13 | ||||
-rw-r--r-- | hcid/dbus-api.txt | 1 |
2 files changed, 13 insertions, 1 deletions
diff --git a/hcid/dbus-adapter.c b/hcid/dbus-adapter.c index ace0b32e..86a43c81 100644 --- a/hcid/dbus-adapter.c +++ b/hcid/dbus-adapter.c @@ -1303,10 +1303,11 @@ static DBusHandlerResult handle_dev_get_remote_alias_req(DBusConnection *conn, D static DBusHandlerResult handle_dev_set_remote_alias_req(DBusConnection *conn, DBusMessage *msg, void *data) { + char filename[PATH_MAX + 1]; struct hci_dbus_data *dbus_data = data; DBusMessage *reply, *signal; DBusError err; - char *str_ptr, *addr_ptr; + char *str_ptr, *addr_ptr, *find_ptr; bdaddr_t bdaddr; int ecode; @@ -1327,6 +1328,16 @@ static DBusHandlerResult handle_dev_set_remote_alias_req(DBusConnection *conn, D return error_invalid_arguments(conn, msg); } + /* check if it is a unknown address */ + snprintf(filename, PATH_MAX, "%s/%s/lastseen", STORAGEDIR, dbus_data->address); + + find_ptr = textfile_get(filename, addr_ptr); + + if (!find_ptr) + return error_unknown_address(conn, msg); + + free(find_ptr); + str2ba(addr_ptr, &bdaddr); ecode = set_device_alias(dbus_data->dev_id, &bdaddr, str_ptr); diff --git a/hcid/dbus-api.txt b/hcid/dbus-api.txt index 6c04f1e7..035b8db0 100644 --- a/hcid/dbus-api.txt +++ b/hcid/dbus-api.txt @@ -488,6 +488,7 @@ Methods string GetAddress() name. Possible errors: org.bluez.Error.Failed + org.bluez.Error.UnknownAddress org.bluez.Error.InvalidArguments void ClearRemoteAlias(string address) |