Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 83b48c30 authored by Pavlin Radoslavov's avatar Pavlin Radoslavov Committed by Andre Eisenbach
Browse files

Ignore the Class Of Device if the value is invalid

If a Bluetooth Device is dual-mode and is discoverable as both
a Classic and a LE device, ignore unknown "zero" values
triggered by the LE advertisements. Otherwise, those could overwrite
a valid (previously discovered) Class Of Device.

Bug: 37615863
Test: Manual with LG HBS1100 headset
Change-Id: I5a0f6ef56248b41d973b850a5542475e45e0312d
parent 7c14d52c
Loading
Loading
Loading
Loading
+9 −12
Original line number Diff line number Diff line
@@ -1243,7 +1243,6 @@ static void btif_dm_search_devices_evt(uint16_t event, char* p_param) {

    case BTA_DM_INQ_RES_EVT: {
      /* inquiry result */
      uint32_t cod;
      bt_bdname_t bdname;
      bt_bdaddr_t bdaddr;
      uint8_t remote_name_len;
@@ -1258,13 +1257,6 @@ static void btif_dm_search_devices_evt(uint16_t event, char* p_param) {
                       p_search_data->inq_res.device_type);
      bdname.name[0] = 0;

      cod = devclass2uint(p_search_data->inq_res.dev_class);

      if (cod == 0) {
        LOG_DEBUG(LOG_TAG, "%s cod is 0, set as unclassified", __func__);
        cod = COD_UNCLASSIFIED;
      }

      if (!check_eir_remote_name(p_search_data, bdname.name, &remote_name_len))
        check_cached_remote_name(p_search_data, bdname.name, &remote_name_len);

@@ -1300,10 +1292,15 @@ static void btif_dm_search_devices_evt(uint16_t event, char* p_param) {
        }

        /* DEV_CLASS */
        uint32_t cod = devclass2uint(p_search_data->inq_res.dev_class);
        BTIF_TRACE_DEBUG("%s cod is 0x%06x", __func__, cod);
        if (cod != 0) {
          BTIF_STORAGE_FILL_PROPERTY(&properties[num_properties],
                                     BT_PROPERTY_CLASS_OF_DEVICE, sizeof(cod),
                                     &cod);
          num_properties++;
        }

        /* DEV_TYPE */
        /* FixMe: Assumption is that bluetooth.h and BTE enums match */