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

Commit a477ae45 authored by Myles Watson's avatar Myles Watson
Browse files

Security: Move parsing to HCI: cancel complete

The security code should not have to parse packets.

Also pass a peer address by value.

Bug: 301661850
Test: mma -j32
Change-Id: Ie72a5c5559f2ce19923540b345d68d83004e43c0
parent b3bb22e5
Loading
Loading
Loading
Loading
+2 −12
Original line number Diff line number Diff line
@@ -2128,17 +2128,7 @@ static void btm_sec_bond_cancel_complete(void) {
 * Returns          void
 *
 ******************************************************************************/
void btm_create_conn_cancel_complete(const uint8_t* p, uint16_t evt_len) {
  uint8_t status;

  if (evt_len < 1 + BD_ADDR_LEN) {
    LOG_ERROR("%s malformatted event packet, too short", __func__);
    return;
  }

  STREAM_TO_UINT8(status, p);
  RawAddress bd_addr;
  STREAM_TO_BDADDR(bd_addr, p);
void btm_create_conn_cancel_complete(uint8_t status, const RawAddress bd_addr) {
  LOG_VERBOSE("btm_create_conn_cancel_complete(): in State: %s  status:%d",
              btm_pair_state_descr(btm_sec_cb.pairing_state), status);
  log_link_layer_connection_event(
@@ -2614,7 +2604,7 @@ void btm_sec_rmt_host_support_feat_evt(const uint8_t* p) {
 * Returns          void
 *
 ******************************************************************************/
void btm_io_capabilities_req(const RawAddress& p) {
void btm_io_capabilities_req(RawAddress p) {
  if (btm_sec_is_a_bonded_dev(p)) {
    LOG_WARN("%s: Incoming bond request, but %s is already bonded (removing)",
             __func__, ADDRESS_TO_LOGGABLE_CSTR(p));
+3 −2
Original line number Diff line number Diff line
@@ -465,7 +465,8 @@ void btm_sec_conn_req(const RawAddress& bda, const DEV_CLASS dc);
 * Returns          void
 *
 ******************************************************************************/
void btm_create_conn_cancel_complete(const uint8_t* p, uint16_t evt_len);
void btm_create_conn_cancel_complete(uint8_t status, const RawAddress bd_addr,
                                     uint32_t value);

/*******************************************************************************
 *
@@ -531,7 +532,7 @@ void btm_sec_rmt_host_support_feat_evt(const uint8_t* p);
 * Returns          void
 *
 ******************************************************************************/
void btm_io_capabilities_req(const RawAddress& p);
void btm_io_capabilities_req(RawAddress p);

/*******************************************************************************
 *
+24 −1
Original line number Diff line number Diff line
@@ -46,9 +46,11 @@
#include "stack/include/ble_acl_interface.h"
#include "stack/include/ble_hci_link_interface.h"
#include "stack/include/bt_hdr.h"
#include "stack/include/bt_types.h"
#include "stack/include/btm_ble_addr.h"
#include "stack/include/btm_ble_api.h"
#include "stack/include/btm_iso_api.h"
#include "stack/include/btm_sec_api_types.h"
#include "stack/include/dev_hci_link_interface.h"
#include "stack/include/hci_error_code.h"
#include "stack/include/hci_evt_length.h"
@@ -91,6 +93,11 @@ static void btu_hcif_read_clock_off_comp_evt(uint8_t* p);
static void btu_hcif_esco_connection_comp_evt(const uint8_t* p);
static void btu_hcif_esco_connection_chg_evt(uint8_t* p);

/* Parsing functions for btm functions */

static void btu_hcif_create_conn_cancel_complete(const uint8_t* p,
                                                 uint16_t evt_len);

/* Simple Pairing Events */
static void btu_hcif_io_cap_request_evt(const uint8_t* p);

@@ -1105,7 +1112,7 @@ static void btu_hcif_hdl_command_complete(uint16_t opcode, uint8_t* p,
      break;

    case HCI_CREATE_CONNECTION_CANCEL:
      btm_create_conn_cancel_complete(p, evt_len);
      btu_hcif_create_conn_cancel_complete(p, evt_len);
      break;

    case HCI_READ_LOCAL_OOB_DATA:
@@ -1410,6 +1417,22 @@ static void btu_hcif_mode_change_evt(uint8_t* p) {
#endif
}

/* Parsing functions for btm functions */

void btu_hcif_create_conn_cancel_complete(const uint8_t* p, uint16_t evt_len) {
  uint8_t status;

  if (evt_len < 1 + BD_ADDR_LEN) {
    LOG_ERROR("%s malformatted event packet, too short", __func__);
    return;
  }

  STREAM_TO_UINT8(status, p);
  RawAddress bd_addr;
  STREAM_TO_BDADDR(bd_addr, p);
  btm_create_conn_cancel_complete(status, bd_addr);
}

/*******************************************************************************
 *
 * Function         btu_hcif_link_key_notification_evt
+2 −2
Original line number Diff line number Diff line
@@ -25,8 +25,8 @@
// This header contains functions for HCIF-Security Management to invoke
//

void btm_create_conn_cancel_complete(const uint8_t* p, uint16_t evt_len);
void btm_io_capabilities_req(const RawAddress& p);
void btm_create_conn_cancel_complete(uint8_t status, const RawAddress bd_addr);
void btm_io_capabilities_req(RawAddress p);
void btm_io_capabilities_rsp(const uint8_t* p);
void btm_proc_sp_req_evt(tBTM_SP_EVT event, const uint8_t* p);
void btm_read_local_oob_complete(uint8_t* p, uint16_t evt_len);
+5 −3
Original line number Diff line number Diff line
@@ -25,7 +25,9 @@
#include <cstdint>
#include <string>

#include "btm_sec_api_types.h"
#include "test/common/mock_functions.h"
#include "types/raw_address.h"

// Original usings

@@ -294,15 +296,15 @@ void NotifyBondingCanceled(tBTM_STATUS btm_status) {
  inc_func_call_count(__func__);
  test::mock::stack_btm_sec::NotifyBondingCanceled(btm_status);
}
void btm_create_conn_cancel_complete(const uint8_t* p, uint16_t evt_len) {
void btm_create_conn_cancel_complete(uint8_t status, const RawAddress bd_addr) {
  inc_func_call_count(__func__);
  test::mock::stack_btm_sec::btm_create_conn_cancel_complete(p, evt_len);
  test::mock::stack_btm_sec::btm_create_conn_cancel_complete(status, bd_addr);
}
const uint8_t* btm_get_dev_class(const RawAddress& bda) {
  inc_func_call_count(__func__);
  return test::mock::stack_btm_sec::btm_get_dev_class(bda);
}
void btm_io_capabilities_req(const RawAddress& p) {
void btm_io_capabilities_req(RawAddress p) {
  inc_func_call_count(__func__);
  test::mock::stack_btm_sec::btm_io_capabilities_req(p);
}
Loading