diff options
Diffstat (limited to 'hcid/dbus-adapter.c')
| -rw-r--r-- | hcid/dbus-adapter.c | 13 | 
1 files changed, 12 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); | 
