device : Return proper error code for get_ida 07/186007/1
authorSeungyoun Ju <sy39.ju@samsung.com>
Mon, 6 Aug 2018 11:25:58 +0000 (20:25 +0900)
committerSeungyoun Ju <sy39.ju@samsung.com>
Mon, 6 Aug 2018 11:51:42 +0000 (20:51 +0900)
[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

src/device.c

index 7cf7e78..363ce9f 100644 (file)
@@ -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)