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

Commit f1ffeeb5 authored by Hansong Zhang's avatar Hansong Zhang
Browse files

Fix L2cap LE COC security record leaks

- When we are client, we don't need to register security during L2cap
registration.
- When we are done, we clean up security record by PSM; Service ID might
be invalid.
- Once the btif topshim facade initial commit is done, we can repro this
and verify the fix with test automation.

Tag: #stability
Bug: 193142224
Test: CtsVerifier LE COC Client for many times; later we will have an
automated test for this
Change-Id: I90fd23ce26c65ca3314e0754a2630d3f63c5d5d8
parent 72d2fa4d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -994,7 +994,7 @@ static void gap_release_ccb(tGAP_CCB* p_ccb) {
  }

  /* Free the security record for this PSM */
  BTM_SecClrService(p_ccb->service_id);
  BTM_SecClrServiceByPsm(p_ccb->psm);
  if (p_ccb->transport == BT_TRANSPORT_BR_EDR) L2CA_Deregister(p_ccb->psm);
  if (p_ccb->transport == BT_TRANSPORT_LE) L2CA_DeregisterLECoc(p_ccb->psm);
}
+5 −1
Original line number Diff line number Diff line
@@ -382,7 +382,11 @@ uint16_t L2CA_RegisterLECoc(uint16_t psm, const tL2CAP_APPL_INFO& p_cb_info,
    return bluetooth::shim::L2CA_RegisterLECoc(psm, p_cb_info, sec_level, cfg);
  }

  if (p_cb_info.pL2CA_ConnectInd_Cb != nullptr && psm < LE_DYNAMIC_PSM_START) {
    //  If we register LE COC for outgoing connection only, don't register with
    //  BTM_Sec, because it's handled by L2CA_ConnectLECocReq.
    BTM_SetSecurityLevel(false, "", 0, sec_level, psm, 0, 0);
  }

  /* Verify that the required callback info has been filled in
  **      Note:  Connection callbacks are required but not checked