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

Commit 9c570c29 authored by Myles Watson's avatar Myles Watson
Browse files

Return early if vendor-specific command fails

Add CHECK() statements to crash if the callback is passed the incorrect
opcode or if there are no parameters.

Bug: 76192234
Bug: 77495521
Test: Start Bluetooth with a BT 3.0 chip (or a simulated one)
Change-Id: Iddd9a8503b2cfd52b16fb1c59f40e108b478e7b6
parent e6736aa0
Loading
Loading
Loading
Loading
+29 −28
Original line number Diff line number Diff line
@@ -485,13 +485,16 @@ static void btm_ble_vendor_capability_vsc_cmpl_cback(
  BTM_TRACE_DEBUG("%s", __func__);

  /* Check status of command complete event */
  if ((p_vcs_cplt_params->opcode == HCI_BLE_VENDOR_CAP_OCF) &&
      (p_vcs_cplt_params->param_len > 0)) {
  CHECK(p_vcs_cplt_params->opcode == HCI_BLE_VENDOR_CAP_OCF);
  CHECK(p_vcs_cplt_params->param_len > 0);

  p = p_vcs_cplt_params->p_param_buf;
  STREAM_TO_UINT8(status, p);
  }

  if (status == HCI_SUCCESS) {
  if (status != HCI_SUCCESS) {
    BTM_TRACE_DEBUG("%s: Status = 0x%02x (0 is success)", __func__, status);
    return;
  }
  STREAM_TO_UINT8(btm_cb.cmn_ble_vsc_cb.adv_inst_max, p);
  STREAM_TO_UINT8(btm_cb.cmn_ble_vsc_cb.rpa_offloading, p);
  STREAM_TO_UINT16(btm_cb.cmn_ble_vsc_cb.tot_scan_results_strg, p);
@@ -504,8 +507,7 @@ static void btm_ble_vendor_capability_vsc_cmpl_cback(
      BTM_VSC_CHIP_CAPABILITY_RSP_LEN_L_RELEASE) {
    STREAM_TO_UINT16(btm_cb.cmn_ble_vsc_cb.version_supported, p);
  } else {
      btm_cb.cmn_ble_vsc_cb.version_supported =
          BTM_VSC_CHIP_CAPABILITY_L_VERSION;
    btm_cb.cmn_ble_vsc_cb.version_supported = BTM_VSC_CHIP_CAPABILITY_L_VERSION;
  }

  if (btm_cb.cmn_ble_vsc_cb.version_supported >=
@@ -515,7 +517,6 @@ static void btm_ble_vendor_capability_vsc_cmpl_cback(
    STREAM_TO_UINT16(btm_cb.cmn_ble_vsc_cb.debug_logging_supported, p);
  }
  btm_cb.cmn_ble_vsc_cb.values_read = true;
  }

  BTM_TRACE_DEBUG(
      "%s: stat=%d, irk=%d, ADV ins:%d, rpa=%d, ener=%d, ext_scan=%d", __func__,