bta_ag_cb.profile[i].sdp_handle = 0;
}
BTM_FreeSCN(bta_ag_cb.profile[i].scn);
- BTM_SecClrService(bta_ag_sec_id[i]);
+ BTM_ClearRfcommSecurity(bta_ag_cb.profile[i].scn);
bta_sys_remove_uuid(bta_ag_uuid[i]);
}
}
SDP_DeleteRecord(client_cb->sdp_handle);
client_cb->sdp_handle = 0;
BTM_FreeSCN(client_cb->scn);
- BTM_SecClrService(BTM_SEC_SERVICE_HF_HANDSFREE);
+ BTM_ClearRfcommSecurity(client_cb->scn);
bta_sys_remove_uuid(UUID_SERVCLASS_HF_HANDSFREE);
}
}
}
struct RfcommSecurityRecord {
- uint32_t service_id;
bool need_mitm;
bool need_16_digit_pin;
};
static std::unordered_map<uint32_t, RfcommSecurityRecord>
legacy_stack_rfcomm_security_records;
-void BTM_SetRfcommSecurity(uint32_t service_id, uint32_t scn, bool need_mitm,
+void BTM_SetRfcommSecurity(uint32_t scn, bool need_mitm,
bool need_16_digit_pin) {
- legacy_stack_rfcomm_security_records[scn] = {service_id, need_mitm,
- need_16_digit_pin};
+ legacy_stack_rfcomm_security_records[scn] = {need_mitm, need_16_digit_pin};
+}
+
+void BTM_ClearRfcommSecurity(uint32_t scn) {
+ legacy_stack_rfcomm_security_records.erase(scn);
}
/*******************************************************************************
*
******************************************************************************/
uint8_t BTM_SecClrService(uint8_t service_id) {
- for (auto& entry : legacy_stack_rfcomm_security_records) {
- if (entry.second.service_id == service_id) {
- legacy_stack_rfcomm_security_records.erase(entry.first);
- }
- }
-
tBTM_SEC_SERV_REC* p_srec = &btm_cb.sec_serv_rec[0];
uint8_t num_freed = 0;
int i;
/* add mx service to use no security */
BTM_SetSecurityLevel(false, "RFC_MUX", BTM_SEC_SERVICE_RFC_MUX,
BTM_SEC_NONE, BT_PSM_RFCOMM, BTM_SEC_PROTO_RFCOMM, 0);
+ BTM_SetSecurityLevel(true, "RFC_MUX", BTM_SEC_SERVICE_RFC_MUX, BTM_SEC_NONE,
+ BT_PSM_RFCOMM, BTM_SEC_PROTO_RFCOMM, 0);
} else {
btm_cb.security_mode = BTM_SEC_MODE_SERVICE;
}
uint32_t mx_proto_id, uint32_t mx_chan_id);
// Set the rfcomm security requirement
-void BTM_SetRfcommSecurity(uint32_t service_id, uint32_t scn, bool need_mitm,
+void BTM_SetRfcommSecurity(uint32_t scn, bool need_mitm,
bool need_16_digit_pin);
+void BTM_ClearRfcommSecurity(uint32_t scn);
/*******************************************************************************
*
uint16_t* p_handle,
tPORT_CALLBACK* p_mgmt_cb,
uint8_t service_id, uint16_t sec_mask) {
- BTM_SetRfcommSecurity(service_id, scn,
- sec_mask & (BTM_SEC_OUT_MITM | BTM_SEC_IN_MITM),
+ BTM_SetRfcommSecurity(scn, sec_mask & (BTM_SEC_OUT_MITM | BTM_SEC_IN_MITM),
sec_mask & BTM_SEC_IN_MIN_16_DIGIT_PIN);
return RFCOMM_CreateConnection(uuid, scn, is_server, mtu, bd_addr, p_handle,
return true;
}
-void BTM_SetRfcommSecurity(uint32_t service_id, uint32_t scn, bool need_mitm,
+void BTM_SetRfcommSecurity(uint32_t scn, bool need_mitm,
bool need_16_digit_pin) {}
uint16_t BTM_GetMaxPacketSize(const RawAddress& addr) {