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

Commit e994fc2a authored by Jakub Pawlowski's avatar Jakub Pawlowski Committed by Andre Eisenbach
Browse files

Fix invalid BDA parameter passing for connection parameter updates

The BD_ADDR type is not a struct, just an array of bytes. Therefore,
Bind does not know how to store it for later execution, and just stores
the pointer to the first element, which is not valid at time of
execution.

Instead use bt_bdaddr_t, which is a struct. Bind will copy it's content
properly.

Change-Id: I4875aae4d7cbb809821d91a13554b8fdf310a7fe
parent e3594209
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -949,14 +949,14 @@ bt_status_t btif_gattc_configure_mtu(int conn_id, int mtu) {
      Bind(base::IgnoreResult(&BTA_GATTC_ConfigureMTU), conn_id, mtu));
}

void btif_gattc_conn_parameter_update_impl(const BD_ADDR addr, int min_interval,
void btif_gattc_conn_parameter_update_impl(bt_bdaddr_t addr, int min_interval,
                                           int max_interval, int latency,
                                           int timeout) {
  if (BTA_DmGetConnectionState(const_cast<UINT8 *>(addr)))
    BTA_DmBleUpdateConnectionParams(const_cast<UINT8 *>(addr), min_interval,
  if (BTA_DmGetConnectionState(addr.address))
    BTA_DmBleUpdateConnectionParams(addr.address, min_interval,
                                    max_interval, latency, timeout);
  else
    BTA_DmSetBlePrefConnParams(const_cast<UINT8 *>(addr), min_interval,
    BTA_DmSetBlePrefConnParams(addr.address, min_interval,
                               max_interval, latency, timeout);
}

@@ -966,7 +966,7 @@ bt_status_t btif_gattc_conn_parameter_update(const bt_bdaddr_t *bd_addr,
  CHECK_BTGATT_INIT();
  return do_in_jni_thread(
      Bind(base::IgnoreResult(&btif_gattc_conn_parameter_update_impl),
           bd_addr->address, min_interval, max_interval, latency, timeout));
           *bd_addr, min_interval, max_interval, latency, timeout));
}

void btif_gattc_scan_filter_param_setup_impl(