summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeungyoun Ju <sy39.ju@samsung.com>2018-08-06 20:25:58 +0900
committerSeungyoun Ju <sy39.ju@samsung.com>2018-08-06 20:51:42 +0900
commitca0845702968afe90e66ca1cc6a1b16de7af9d7e (patch)
treeb3dfed9ba40ccecb9a4f193c12738cc24190441a
parent63a21f0f97cf3137680aa978b6bdcbfa7395719d (diff)
downloadbluez-ca0845702968afe90e66ca1cc6a1b16de7af9d7e.tar.gz
bluez-ca0845702968afe90e66ca1cc6a1b16de7af9d7e.tar.bz2
bluez-ca0845702968afe90e66ca1cc6a1b16de7af9d7e.zip
device : Return proper error code for get_ida
[Problem] There is no way to know if remote device is not bonded or it doesn't support IDA (i.e. BR/EDR device, LE Static random address or non-RPA used device). [Cause & Measure] We consider only LE RPA device. So return not supported error code for others. [Checking Method] N/A Change-Id: I734a468a64cc85fa6aac08a9f0621dd95c44217c
-rw-r--r--src/device.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/device.c b/src/device.c
index 7cf7e783..363ce9fb 100644
--- a/src/device.c
+++ b/src/device.c
@@ -4193,13 +4193,18 @@ static DBusMessage *device_get_ida(DBusConnection *conn, DBusMessage *msg,
if (!device->le)
return btd_error_not_supported(msg);
+ if (device->bdaddr_type != BDADDR_LE_RANDOM)
+ return btd_error_not_supported(msg);
+
if (device->rpa) {
if (device->bredr)
ba2str(device->rpa, device_idaddr);
else
ba2str(&device->bdaddr, device_idaddr);
- } else
+ } else if ((device->bdaddr.b[5] >> 6) == 0x01)
return btd_error_does_not_exist(msg);
+ else
+ return btd_error_not_supported(msg);
reply = dbus_message_new_method_return(msg);
if (!reply)