From 1cb7d5d359881443a53e1859c1dfbf8f947e702b Mon Sep 17 00:00:00 2001 From: Claudio Takahasi Date: Thu, 1 Jun 2006 20:31:11 +0000 Subject: SetRemoteAlias:Added unknown address verification --- hcid/dbus-adapter.c | 13 ++++++++++++- hcid/dbus-api.txt | 1 + 2 files changed, 13 insertions(+), 1 deletion(-) 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) -- cgit