diff options
| -rw-r--r-- | hcid/dbus-service.c | 11 | ||||
| -rw-r--r-- | hcid/security.c | 4 | 
2 files changed, 8 insertions, 7 deletions
| diff --git a/hcid/dbus-service.c b/hcid/dbus-service.c index 18c9b68e..d07741a3 100644 --- a/hcid/dbus-service.c +++ b/hcid/dbus-service.c @@ -684,15 +684,11 @@ int service_req_auth(const bdaddr_t *src, const bdaddr_t *dst,  				dst, active_conn_find_by_bdaddr))  		return -ENOTCONN; -	ba2str(dst, address); -	device = adapter_find_device(adapter, address); -	if (!device) -		return -EPERM; -  	service = search_service_by_uuid(uuid);  	if (!service)  		return -EPERM; +	ba2str(dst, address);  	trusted = read_trust(src, address, GLOBAL_TRUST);  	if (!trusted)  		trusted = read_trust(BDADDR_ANY, address, service->ident); @@ -702,6 +698,11 @@ int service_req_auth(const bdaddr_t *src, const bdaddr_t *dst,  		return 0;  	} +	device = adapter_find_device(adapter, address); +	if (!device) +		return handle_authorize_request_old(service, adapter->path, +					address, uuid, cb, user_data); +  	agent = (device->agent ? : adapter->agent);  	if (!agent)  		return handle_authorize_request_old(service, adapter->path, diff --git a/hcid/security.c b/hcid/security.c index 4047c9fa..0bfbcbec 100644 --- a/hcid/security.c +++ b/hcid/security.c @@ -289,8 +289,8 @@ static void link_key_request(int dev, bdaddr_t *sba, bdaddr_t *dba)  	bacpy(&req.bdaddr, dba);  	err = ioctl(dev, HCIGETAUTHINFO, (unsigned long) &req); -	if (err < 0) -		debug("HCIGETAUTHINFO failed (%d)", +	if (err < 0 && errno != EINVAL) +		debug("HCIGETAUTHINFO failed %s (%d)",  					strerror(errno), errno);  	else  		req.type = 0x00; | 
