summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClaudio Takahasi <claudio.takahasi@openbossa.org>2006-06-01 20:31:11 +0000
committerClaudio Takahasi <claudio.takahasi@openbossa.org>2006-06-01 20:31:11 +0000
commit1cb7d5d359881443a53e1859c1dfbf8f947e702b (patch)
tree9104e08ddbcd590d522af6e0b4e0edeb4b473bda
parent57722c34c18e4067ebb397120156a673dfe89256 (diff)
SetRemoteAlias:Added unknown address verification
-rw-r--r--hcid/dbus-adapter.c13
-rw-r--r--hcid/dbus-api.txt1
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)