diff options
| -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) | 
