From b3370110a694633c6bc34d16f4e389a59a6b2b9c Mon Sep 17 00:00:00 2001 From: yangfeng Date: Thu, 6 Aug 2026 11:01:58 +0800 Subject: [PATCH] fix(bluedroid): Fix the compilation issue of BCM_STRNCPY_S --- .../bt/host/bluedroid/bta/av/bta_av_api.c | 3 +- .../bt/host/bluedroid/bta/av/bta_av_main.c | 6 +- .../bt/host/bluedroid/bta/dm/bta_dm_act.c | 66 +++++++------------ .../bt/host/bluedroid/bta/dm/bta_dm_api.c | 3 +- .../bt/host/bluedroid/bta/hf_ag/bta_ag_api.c | 3 +- .../bt/host/bluedroid/bta/hf_ag/bta_ag_cmd.c | 11 ++-- .../bta/hf_client/bta_hf_client_act.c | 18 ++--- .../bta/hf_client/bta_hf_client_api.c | 5 +- .../bta/hf_client/bta_hf_client_at.c | 4 +- .../bt/host/bluedroid/btc/core/btc_config.c | 2 +- .../bt/host/bluedroid/btc/core/btc_dev.c | 6 +- .../btc/profile/std/gap/btc_gap_ble.c | 10 +-- .../btc/profile/std/gap/btc_gap_bt.c | 10 +-- .../bt/host/bluedroid/stack/avdt/avdt_api.c | 2 +- .../bt/host/bluedroid/stack/btm/btm_ble.c | 2 +- .../bt/host/bluedroid/stack/btm/btm_ble_gap.c | 2 +- .../bt/host/bluedroid/stack/btm/btm_dev.c | 2 +- .../bt/host/bluedroid/stack/btm/btm_devctl.c | 6 +- .../bt/host/bluedroid/stack/btm/btm_sec.c | 12 ++-- .../bt/host/bluedroid/stack/btu/btu_hcif.c | 9 ++- .../bt/host/bluedroid/stack/gatt/gatt_utils.c | 2 +- .../bluedroid/stack/include/stack/bt_types.h | 2 +- 22 files changed, 76 insertions(+), 110 deletions(-) diff --git a/components/bt/host/bluedroid/bta/av/bta_av_api.c b/components/bt/host/bluedroid/bta/av/bta_av_api.c index d5b9fd1b1b2..98609c39c6c 100644 --- a/components/bt/host/bluedroid/bta/av/bta_av_api.c +++ b/components/bt/host/bluedroid/bta/av/bta_av_api.c @@ -118,8 +118,7 @@ void BTA_AvRegister(tBTA_AV_CHNL chnl, const char *p_service_name, UINT8 app_id, p_buf->hdr.layer_specific = chnl; p_buf->hdr.event = BTA_AV_API_REGISTER_EVT; if (p_service_name) { - BCM_STRNCPY_S(p_buf->p_service_name, p_service_name, BTA_SERVICE_NAME_LEN); - p_buf->p_service_name[BTA_SERVICE_NAME_LEN] = '\0'; + BCM_STRLCPY_S(p_buf->p_service_name, p_service_name, BTA_SERVICE_NAME_LEN + 1); } else { p_buf->p_service_name[0] = '\0'; } diff --git a/components/bt/host/bluedroid/bta/av/bta_av_main.c b/components/bt/host/bluedroid/bta/av/bta_av_main.c index c3fb8857f19..8a1d59dc100 100644 --- a/components/bt/host/bluedroid/bta/av/bta_av_main.c +++ b/components/bt/host/bluedroid/bta/av/bta_av_main.c @@ -480,8 +480,7 @@ static void bta_av_api_sink_enable(tBTA_AV_DATA *p_data) activate_sink = p_data->hdr.layer_specific; APPL_TRACE_DEBUG("bta_av_api_sink_enable %d \n", activate_sink) char p_service_name[BTA_SERVICE_NAME_LEN + 1]; - BCM_STRNCPY_S(p_service_name, BTIF_AVK_SERVICE_NAME, BTA_SERVICE_NAME_LEN); - p_service_name[BTA_SERVICE_NAME_LEN] = '\0'; + BCM_STRLCPY_S(p_service_name, BTIF_AVK_SERVICE_NAME, BTA_SERVICE_NAME_LEN + 1); if (activate_sink) { AVDT_SINK_Activate(); @@ -544,8 +543,7 @@ static void bta_av_api_register(tBTA_AV_DATA *p_data) tBTA_UTL_COD cod; UINT8 index = 0; char p_avk_service_name[BTA_SERVICE_NAME_LEN + 1]; - BCM_STRNCPY_S(p_avk_service_name, BTIF_AVK_SERVICE_NAME, BTA_SERVICE_NAME_LEN); - p_avk_service_name[BTA_SERVICE_NAME_LEN] = '\0'; + BCM_STRLCPY_S(p_avk_service_name, BTIF_AVK_SERVICE_NAME, BTA_SERVICE_NAME_LEN + 1); memset(&cs, 0, sizeof(tAVDT_CS)); diff --git a/components/bt/host/bluedroid/bta/dm/bta_dm_act.c b/components/bt/host/bluedroid/bta/dm/bta_dm_act.c index 827858767d2..b2af347fe81 100644 --- a/components/bt/host/bluedroid/bta/dm/bta_dm_act.c +++ b/components/bt/host/bluedroid/bta/dm/bta_dm_act.c @@ -2130,8 +2130,7 @@ void bta_dm_sdp_result (tBTA_DM_MSG *p_data) if (SDP_FindServiceUUIDInRec(p_sdp_rec, &service_uuid)) { /* send result back to app now, one by one */ bdcpy (result.disc_ble_res.bd_addr, bta_dm_search_cb.peer_bdaddr); - BCM_STRNCPY_S((char *)result.disc_ble_res.bd_name, bta_dm_get_remname(), BD_NAME_LEN); - result.disc_ble_res.bd_name[BD_NAME_LEN] = '\0'; + BCM_STRLCPY_S((char *)result.disc_ble_res.bd_name, bta_dm_get_remname(), BD_NAME_LEN + 1); result.disc_ble_res.service.len = service_uuid.len; result.disc_ble_res.service.uu.uuid16 = service_uuid.uu.uuid16; @@ -2280,8 +2279,7 @@ void bta_dm_sdp_result (tBTA_DM_MSG *p_data) } bdcpy (p_msg->disc_result.result.disc_res.bd_addr, bta_dm_search_cb.peer_bdaddr); - BCM_STRNCPY_S((char *)p_msg->disc_result.result.disc_res.bd_name, bta_dm_get_remname(), BD_NAME_LEN); - p_msg->disc_result.result.disc_res.bd_name[BD_NAME_LEN] = '\0'; + BCM_STRLCPY_S((char *)p_msg->disc_result.result.disc_res.bd_name, bta_dm_get_remname(), BD_NAME_LEN + 1); bta_sys_sendmsg(p_msg); } @@ -2303,8 +2301,7 @@ void bta_dm_sdp_result (tBTA_DM_MSG *p_data) p_msg->disc_result.result.disc_res.result = BTA_FAILURE; p_msg->disc_result.result.disc_res.services = bta_dm_search_cb.services_found; bdcpy (p_msg->disc_result.result.disc_res.bd_addr, bta_dm_search_cb.peer_bdaddr); - BCM_STRNCPY_S((char *)p_msg->disc_result.result.disc_res.bd_name, bta_dm_get_remname(), BD_NAME_LEN); - p_msg->disc_result.result.disc_res.bd_name[BD_NAME_LEN] = '\0'; + BCM_STRLCPY_S((char *)p_msg->disc_result.result.disc_res.bd_name, bta_dm_get_remname(), BD_NAME_LEN + 1); bta_sys_sendmsg(p_msg); } @@ -2696,8 +2693,7 @@ static void bta_dm_find_services ( BD_ADDR bd_addr) p_msg->hdr.event = BTA_DM_DISCOVERY_RESULT_EVT; p_msg->disc_result.result.disc_res.services = bta_dm_search_cb.services_found; bdcpy (p_msg->disc_result.result.disc_res.bd_addr, bta_dm_search_cb.peer_bdaddr); - BCM_STRNCPY_S((char *)p_msg->disc_result.result.disc_res.bd_name,bta_dm_get_remname(), BD_NAME_LEN); - p_msg->disc_result.result.disc_res.bd_name[BD_NAME_LEN] = '\0'; + BCM_STRLCPY_S((char *)p_msg->disc_result.result.disc_res.bd_name,bta_dm_get_remname(), BD_NAME_LEN + 1); bta_sys_sendmsg(p_msg); } @@ -2879,8 +2875,7 @@ static void bta_dm_discover_device(BD_ADDR remote_bd_addr) p_msg->disc_result.result.disc_res.result = BTA_SUCCESS; p_msg->disc_result.result.disc_res.services = bta_dm_search_cb.services_found; bdcpy (p_msg->disc_result.result.disc_res.bd_addr, bta_dm_search_cb.peer_bdaddr); - BCM_STRNCPY_S((char *)p_msg->disc_result.result.disc_res.bd_name, bta_dm_get_remname(), BD_NAME_LEN); - p_msg->disc_result.result.disc_res.bd_name[BD_NAME_LEN] = '\0'; + BCM_STRLCPY_S((char *)p_msg->disc_result.result.disc_res.bd_name, bta_dm_get_remname(), BD_NAME_LEN + 1); bta_sys_sendmsg(p_msg); } @@ -3022,8 +3017,7 @@ static void bta_dm_service_search_remname_cback (BD_ADDR bd_addr, DEV_CLASS dc, if (rem_name.length > BD_NAME_LEN) { rem_name.length = BD_NAME_LEN; } - BCM_STRNCPY_S((char *)rem_name.remote_bd_name, (char *)bd_name, BD_NAME_LEN); - rem_name.remote_bd_name[BD_NAME_LEN] = '\0'; + BCM_STRLCPY_S((char *)rem_name.remote_bd_name, (char *)bd_name, BD_NAME_LEN + 1); rem_name.status = BTM_SUCCESS; bta_dm_remname_cback(&rem_name); @@ -3065,8 +3059,7 @@ static void bta_dm_remname_cback (tBTM_REMOTE_DEV_NAME *p_remote_name) p_remote_name->remote_bd_name); /* remote name discovery is done but it could be failed */ bta_dm_search_cb.name_discover_done = TRUE; - BCM_STRNCPY_S((char *)bta_dm_search_cb.peer_name, (char *)p_remote_name->remote_bd_name, BD_NAME_LEN); - bta_dm_search_cb.peer_name[BD_NAME_LEN] = '\0'; + BCM_STRLCPY_S((char *)bta_dm_search_cb.peer_name, (char *)p_remote_name->remote_bd_name, BD_NAME_LEN + 1); BTM_SecDeleteRmtNameNotifyCallback(&bta_dm_service_search_remname_cback); @@ -3078,8 +3071,7 @@ static void bta_dm_remname_cback (tBTM_REMOTE_DEV_NAME *p_remote_name) if ((p_msg = (tBTA_DM_REM_NAME *) osi_malloc(sizeof(tBTA_DM_REM_NAME))) != NULL) { bdcpy (p_msg->result.disc_res.bd_addr, bta_dm_search_cb.peer_bdaddr); - BCM_STRNCPY_S((char *)p_msg->result.disc_res.bd_name, (char *)p_remote_name->remote_bd_name, BD_NAME_LEN); - p_msg->result.disc_res.bd_name[BD_NAME_LEN] = '\0'; + BCM_STRLCPY_S((char *)p_msg->result.disc_res.bd_name, (char *)p_remote_name->remote_bd_name, BD_NAME_LEN + 1); p_msg->hdr.event = BTA_DM_REMT_NAME_EVT; bta_sys_sendmsg(p_msg); @@ -3107,8 +3099,7 @@ static UINT8 bta_dm_authorize_cback (BD_ADDR bd_addr, DEV_CLASS dev_class, BD_NA bdcpy(sec_event.authorize.bd_addr, bd_addr); memcpy(sec_event.authorize.dev_class, dev_class, DEV_CLASS_LEN); - BCM_STRNCPY_S((char *)sec_event.authorize.bd_name, (char *)bd_name, BD_NAME_LEN); - sec_event.authorize.bd_name[BD_NAME_LEN] = '\0'; + BCM_STRLCPY_S((char *)sec_event.authorize.bd_name, (char *)bd_name, BD_NAME_LEN + 1); #if ( defined(BTA_JV_INCLUDED) && BTA_JV_INCLUDED == TRUE ) sec_event.authorize.service = service_id; @@ -3161,8 +3152,7 @@ static UINT8 bta_dm_authorize_cback (BD_ADDR bd_addr, DEV_CLASS dev_class, BD_NA BTA_COPY_DEVICE_CLASS(sec_event.cfm_req.dev_class, bta_dm_cb.pin_dev_class); if (p_result && p_result->status == BTM_SUCCESS) { - BCM_STRNCPY_S((char *)sec_event.cfm_req.bd_name, (char *)p_result->remote_bd_name, BD_NAME_LEN); - sec_event.cfm_req.bd_name[BD_NAME_LEN] = '\0'; + BCM_STRLCPY_S((char *)sec_event.cfm_req.bd_name, (char *)p_result->remote_bd_name, BD_NAME_LEN + 1); } else { /* No name found */ sec_event.cfm_req.bd_name[0] = '\0'; } @@ -3177,8 +3167,7 @@ static UINT8 bta_dm_authorize_cback (BD_ADDR bd_addr, DEV_CLASS dev_class, BD_NA BTA_COPY_DEVICE_CLASS(sec_event.pin_req.dev_class, bta_dm_cb.pin_dev_class); if (p_result && p_result->status == BTM_SUCCESS) { - BCM_STRNCPY_S((char *)sec_event.pin_req.bd_name, (char *)p_result->remote_bd_name, BD_NAME_LEN); - sec_event.pin_req.bd_name[BD_NAME_LEN] = '\0'; + BCM_STRLCPY_S((char *)sec_event.pin_req.bd_name, (char *)p_result->remote_bd_name, BD_NAME_LEN + 1); } else { /* No name found */ sec_event.pin_req.bd_name[0] = '\0'; } @@ -3212,8 +3201,7 @@ static UINT8 bta_dm_pin_cback (BD_ADDR bd_addr, DEV_CLASS dev_class, BD_NAME bd_ bdcpy(sec_event.pin_req.bd_addr, bd_addr); BTA_COPY_DEVICE_CLASS(sec_event.pin_req.dev_class, dev_class); - BCM_STRNCPY_S((char *)sec_event.pin_req.bd_name, (char *)bd_name, BD_NAME_LEN); - sec_event.pin_req.bd_name[BD_NAME_LEN] = '\0'; + BCM_STRLCPY_S((char *)sec_event.pin_req.bd_name, (char *)bd_name, BD_NAME_LEN + 1); sec_event.pin_req.min_16_digit = min_16_digit; bta_dm_cb.p_sec_cback(BTA_DM_PIN_REQ_EVT, &sec_event); @@ -3402,8 +3390,7 @@ static UINT8 bta_dm_sp_cback (tBTM_SP_EVT event, tBTM_SP_EVT_DATA *p_data) copy these values into key_notif from cfm_req */ bdcpy(sec_event.key_notif.bd_addr, p_data->cfm_req.bd_addr); BTA_COPY_DEVICE_CLASS(sec_event.key_notif.dev_class, p_data->cfm_req.dev_class); - BCM_STRNCPY_S((char *)sec_event.key_notif.bd_name, (char *)p_data->cfm_req.bd_name, BD_NAME_LEN); - sec_event.key_notif.bd_name[BD_NAME_LEN] = '\0'; + BCM_STRLCPY_S((char *)sec_event.key_notif.bd_name, (char *)p_data->cfm_req.bd_name, BD_NAME_LEN + 1); } } @@ -3423,8 +3410,7 @@ static UINT8 bta_dm_sp_cback (tBTM_SP_EVT event, tBTM_SP_EVT_DATA *p_data) } else { bdcpy(sec_event.key_notif.bd_addr, p_data->key_notif.bd_addr); BTA_COPY_DEVICE_CLASS(sec_event.key_notif.dev_class, p_data->key_notif.dev_class); - BCM_STRNCPY_S((char *)sec_event.key_notif.bd_name, (char *)p_data->key_notif.bd_name, BD_NAME_LEN); - sec_event.key_notif.bd_name[BD_NAME_LEN] = '\0'; + BCM_STRLCPY_S((char *)sec_event.key_notif.bd_name, (char *)p_data->key_notif.bd_name, BD_NAME_LEN + 1); } } @@ -3444,8 +3430,7 @@ static UINT8 bta_dm_sp_cback (tBTM_SP_EVT event, tBTM_SP_EVT_DATA *p_data) } else { bdcpy(sec_event.key_notif.bd_addr, p_data->key_notif.bd_addr); BTA_COPY_DEVICE_CLASS(sec_event.key_notif.dev_class, p_data->key_notif.dev_class); - BCM_STRNCPY_S((char *)sec_event.key_notif.bd_name,(char *)p_data->key_notif.bd_name, BD_NAME_LEN); - sec_event.key_notif.bd_name[BD_NAME_LEN] = '\0'; + BCM_STRLCPY_S((char *)sec_event.key_notif.bd_name,(char *)p_data->key_notif.bd_name, BD_NAME_LEN + 1); } } bta_dm_cb.p_sec_cback(pin_evt, &sec_event); @@ -3473,8 +3458,7 @@ static UINT8 bta_dm_sp_cback (tBTM_SP_EVT event, tBTM_SP_EVT_DATA *p_data) bdcpy(sec_event.rmt_oob.bd_addr, p_data->rmt_oob.bd_addr); BTA_COPY_DEVICE_CLASS(sec_event.rmt_oob.dev_class, p_data->rmt_oob.dev_class); - BCM_STRNCPY_S((char *)sec_event.rmt_oob.bd_name, (char *)p_data->rmt_oob.bd_name, BD_NAME_LEN); - sec_event.rmt_oob.bd_name[BD_NAME_LEN] = '\0'; + BCM_STRLCPY_S((char *)sec_event.rmt_oob.bd_name, (char *)p_data->rmt_oob.bd_name, BD_NAME_LEN + 1); bta_dm_cb.p_sec_cback(BTA_DM_SP_RMT_OOB_EVT, &sec_event); @@ -5012,8 +4996,7 @@ static UINT8 bta_dm_ble_smp_cback (tBTM_LE_EVT event, BD_ADDR bda, tBTM_LE_EVT_D bdcpy(sec_event.ble_req.bd_addr, bda); p_name = BTM_SecReadDevName(bda); if (p_name != NULL) { - BCM_STRNCPY_S((char *)sec_event.ble_req.bd_name, p_name, BD_NAME_LEN); - sec_event.ble_req.bd_name[BD_NAME_LEN] = '\0'; + BCM_STRLCPY_S((char *)sec_event.ble_req.bd_name, p_name, BD_NAME_LEN + 1); } else { sec_event.ble_req.bd_name[0] = '\0'; } @@ -5024,8 +5007,7 @@ static UINT8 bta_dm_ble_smp_cback (tBTM_LE_EVT event, BD_ADDR bda, tBTM_LE_EVT_D bdcpy(sec_event.key_notif.bd_addr, bda); p_name = BTM_SecReadDevName(bda); if (p_name != NULL) { - BCM_STRNCPY_S((char *)sec_event.key_notif.bd_name, p_name, BD_NAME_LEN); - sec_event.key_notif.bd_name[BD_NAME_LEN] = '\0'; + BCM_STRLCPY_S((char *)sec_event.key_notif.bd_name, p_name, BD_NAME_LEN + 1); } else { sec_event.key_notif.bd_name[0] = '\0'; } @@ -5056,8 +5038,7 @@ static UINT8 bta_dm_ble_smp_cback (tBTM_LE_EVT event, BD_ADDR bda, tBTM_LE_EVT_D case BTM_LE_NC_REQ_EVT: bdcpy(sec_event.key_notif.bd_addr, bda); - BCM_STRNCPY_S((char *)sec_event.key_notif.bd_name,bta_dm_get_remname(), BD_NAME_LEN); - sec_event.key_notif.bd_name[BD_NAME_LEN] = '\0'; + BCM_STRLCPY_S((char *)sec_event.key_notif.bd_name,bta_dm_get_remname(), BD_NAME_LEN + 1); sec_event.key_notif.passkey = p_data->key_notif; bta_dm_cb.p_sec_cback(BTA_DM_BLE_NC_REQ_EVT, &sec_event); break; @@ -5076,8 +5057,7 @@ static UINT8 bta_dm_ble_smp_cback (tBTM_LE_EVT event, BD_ADDR bda, tBTM_LE_EVT_D #endif p_name = BTM_SecReadDevName(bda); if (p_name != NULL) { - BCM_STRNCPY_S((char *)sec_event.auth_cmpl.bd_name, p_name, BD_NAME_LEN); - sec_event.auth_cmpl.bd_name[BD_NAME_LEN] = '\0'; + BCM_STRLCPY_S((char *)sec_event.auth_cmpl.bd_name, p_name, BD_NAME_LEN + 1); } else { sec_event.auth_cmpl.bd_name[0] = '\0'; } @@ -6586,8 +6566,7 @@ static void bta_dm_gatt_disc_result(tBTA_GATT_ID service_id) /* send result back to app now, one by one */ bdcpy (result.disc_ble_res.bd_addr, bta_dm_search_cb.peer_bdaddr); - BCM_STRNCPY_S((char *)result.disc_ble_res.bd_name, bta_dm_get_remname(), BD_NAME_LEN); - result.disc_ble_res.bd_name[BD_NAME_LEN] = '\0'; + BCM_STRLCPY_S((char *)result.disc_ble_res.bd_name, bta_dm_get_remname(), BD_NAME_LEN + 1); memcpy(&result.disc_ble_res.service, &service_id.uuid, sizeof(tBT_UUID)); bta_dm_search_cb.p_search_cback(BTA_DM_DISC_BLE_RES_EVT, &result); @@ -6629,8 +6608,7 @@ static void bta_dm_gatt_disc_complete(UINT16 conn_id, tBTA_GATT_STATUS status) p_msg->disc_result.result.disc_res.num_uuids = 0; p_msg->disc_result.result.disc_res.p_uuid_list = NULL; bdcpy (p_msg->disc_result.result.disc_res.bd_addr, bta_dm_search_cb.peer_bdaddr); - BCM_STRNCPY_S((char *)p_msg->disc_result.result.disc_res.bd_name, bta_dm_get_remname(), BD_NAME_LEN); - p_msg->disc_result.result.disc_res.bd_name[BD_NAME_LEN] = '\0'; + BCM_STRLCPY_S((char *)p_msg->disc_result.result.disc_res.bd_name, bta_dm_get_remname(), BD_NAME_LEN + 1); p_msg->disc_result.result.disc_res.device_type |= BT_DEVICE_TYPE_BLE; if ( bta_dm_search_cb.ble_raw_used > 0 ) { diff --git a/components/bt/host/bluedroid/bta/dm/bta_dm_api.c b/components/bt/host/bluedroid/bta/dm/bta_dm_api.c index edd41afce59..9955948a6b1 100644 --- a/components/bt/host/bluedroid/bta/dm/bta_dm_api.c +++ b/components/bt/host/bluedroid/bta/dm/bta_dm_api.c @@ -131,8 +131,7 @@ void BTA_DmSetDeviceName(const char *p_name, tBT_DEVICE_TYPE name_type) if ((p_msg = (tBTA_DM_API_SET_NAME *) osi_malloc(sizeof(tBTA_DM_API_SET_NAME))) != NULL) { p_msg->hdr.event = BTA_DM_API_SET_NAME_EVT; /* truncate the name if needed */ - BCM_STRNCPY_S((char *)p_msg->name, p_name, BD_NAME_LEN); - p_msg->name[BD_NAME_LEN] = '\0'; + BCM_STRLCPY_S((char *)p_msg->name, p_name, BD_NAME_LEN + 1); p_msg->name_type = name_type; bta_sys_sendmsg(p_msg); diff --git a/components/bt/host/bluedroid/bta/hf_ag/bta_ag_api.c b/components/bt/host/bluedroid/bta/hf_ag/bta_ag_api.c index 2c5485d3578..68412bc6415 100644 --- a/components/bt/host/bluedroid/bta/hf_ag/bta_ag_api.c +++ b/components/bt/host/bluedroid/bta/hf_ag/bta_ag_api.c @@ -125,8 +125,7 @@ void BTA_AgRegister(tBTA_SERVICE_MASK services, tBTA_SEC sec_mask,tBTA_AG_FEAT f p_buf->app_id = app_id; for (i = 0; i < BTA_AG_NUM_IDX; i++) { if (p_service_names != NULL && p_service_names[i]) { - BCM_STRNCPY_S(p_buf->p_name[i], p_service_names[i], BTA_SERVICE_NAME_LEN); - p_buf->p_name[i][BTA_SERVICE_NAME_LEN] = '\0'; + BCM_STRLCPY_S(p_buf->p_name[i], p_service_names[i], BTA_SERVICE_NAME_LEN + 1); } else { p_buf->p_name[i][0] = '\0'; } diff --git a/components/bt/host/bluedroid/bta/hf_ag/bta_ag_cmd.c b/components/bt/host/bluedroid/bta/hf_ag/bta_ag_cmd.c index 9710359913b..cdd1f7fd3ab 100644 --- a/components/bt/host/bluedroid/bta/hf_ag/bta_ag_cmd.c +++ b/components/bt/host/bluedroid/bta/hf_ag/bta_ag_cmd.c @@ -746,7 +746,7 @@ static void bta_ag_process_unat_res(char *unat_result) trim_data[j] = '\0'; } str_leng = str_leng - 4; - BCM_STRNCPY_S(unat_result, trim_data, BTA_AG_AT_MAX_LEN); + BCM_STRLCPY_S(unat_result, trim_data, BTA_AG_AT_MAX_LEN + 1); i = 0; j = 0; if (str_leng < 4) { @@ -827,8 +827,7 @@ void bta_ag_at_hsp_cback(tBTA_AG_SCB *p_scb, UINT16 cmd, UINT8 arg_type, val.hdr.handle = bta_ag_scb_to_idx(p_scb); val.hdr.app_id = p_scb->app_id; val.num = (UINT16) int_arg; - BCM_STRNCPY_S(val.str, p_arg, BTA_AG_AT_MAX_LEN); - val.str[BTA_AG_AT_MAX_LEN] = '\0'; + BCM_STRLCPY_S(val.str, p_arg, BTA_AG_AT_MAX_LEN + 1); /* call callback with event */ if (bta_ag_cb.p_cback) { (*bta_ag_cb.p_cback)(bta_ag_hsp_cb_evt[cmd], (tBTA_AG *) &val); @@ -867,8 +866,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB *p_scb, UINT16 cmd, UINT8 arg_type, val.hdr.app_id = p_scb->app_id; val.num = int_arg; bdcpy(val.bd_addr, p_scb->peer_addr); - BCM_STRNCPY_S(val.str, p_arg, BTA_AG_AT_MAX_LEN); - val.str[BTA_AG_AT_MAX_LEN] = '\0'; + BCM_STRLCPY_S(val.str, p_arg, BTA_AG_AT_MAX_LEN + 1); event = bta_ag_hfp_cb_evt[cmd]; switch (cmd) @@ -1272,8 +1270,7 @@ void bta_ag_at_err_cback(tBTA_AG_SCB *p_scb, BOOLEAN unknown, char *p_arg) val.hdr.handle = bta_ag_scb_to_idx(p_scb); val.hdr.app_id = p_scb->app_id; val.num = 0; - BCM_STRNCPY_S(val.str, p_arg, BTA_AG_AT_MAX_LEN); - val.str[BTA_AG_AT_MAX_LEN] = '\0'; + BCM_STRLCPY_S(val.str, p_arg, BTA_AG_AT_MAX_LEN + 1); if (bta_ag_cb.p_cback) { (*bta_ag_cb.p_cback)(BTA_AG_AT_UNAT_EVT, (tBTA_AG *) &val); } diff --git a/components/bt/host/bluedroid/bta/hf_client/bta_hf_client_act.c b/components/bt/host/bluedroid/bta/hf_client/bta_hf_client_act.c index 680eee6e78b..e0eeaafc2a1 100644 --- a/components/bt/host/bluedroid/bta/hf_client/bta_hf_client_act.c +++ b/components/bt/host/bluedroid/bta/hf_client/bta_hf_client_act.c @@ -629,8 +629,7 @@ void bta_hf_client_operator_name(char *name) tBTA_HF_CLIENT_OPERATOR_NAME *evt; if ((evt = osi_calloc(sizeof(tBTA_HF_CLIENT_OPERATOR_NAME))) != NULL) { - strlcpy(evt->name, name, BTA_HF_CLIENT_OPERATOR_NAME_LEN + 1); - evt->name[BTA_HF_CLIENT_OPERATOR_NAME_LEN] = '\0'; + BCM_STRLCPY_S(evt->name, name, BTA_HF_CLIENT_OPERATOR_NAME_LEN + 1); if (bta_hf_client_cb.p_cback) { (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_OPERATOR_NAME_EVT, evt); @@ -657,8 +656,7 @@ void bta_hf_client_clip(char *number) tBTA_HF_CLIENT_NUMBER *evt; if ((evt = osi_calloc(sizeof(tBTA_HF_CLIENT_NUMBER))) != NULL) { - strlcpy(evt->number, number, BTA_HF_CLIENT_NUMBER_LEN + 1); - evt->number[BTA_HF_CLIENT_NUMBER_LEN] = '\0'; + BCM_STRLCPY_S(evt->number, number, BTA_HF_CLIENT_NUMBER_LEN + 1); if (bta_hf_client_cb.p_cback) { (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_CLIP_EVT, evt); @@ -684,8 +682,7 @@ void bta_hf_client_ccwa(char *number) tBTA_HF_CLIENT_NUMBER *evt; if ((evt = osi_calloc(sizeof(tBTA_HF_CLIENT_NUMBER))) != NULL) { - strlcpy(evt->number, number, BTA_HF_CLIENT_NUMBER_LEN + 1); - evt->number[BTA_HF_CLIENT_NUMBER_LEN] = '\0'; + BCM_STRLCPY_S(evt->number, number, BTA_HF_CLIENT_NUMBER_LEN + 1); if (bta_hf_client_cb.p_cback) { (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_CCWA_EVT, evt); @@ -742,8 +739,7 @@ void bta_hf_client_clcc(UINT32 idx, BOOLEAN incoming, UINT8 status, BOOLEAN mpty if (number) { evt->number_present = TRUE; - strlcpy(evt->number, number, BTA_HF_CLIENT_NUMBER_LEN + 1); - evt->number[BTA_HF_CLIENT_NUMBER_LEN] = '\0'; + BCM_STRLCPY_S(evt->number, number, BTA_HF_CLIENT_NUMBER_LEN + 1); } if (bta_hf_client_cb.p_cback) { @@ -772,8 +768,7 @@ void bta_hf_client_cnum(char *number, UINT16 service) if ((evt = osi_calloc(sizeof(tBTA_HF_CLIENT_CNUM))) != NULL) { evt->service = service; - strlcpy(evt->number, number, BTA_HF_CLIENT_NUMBER_LEN + 1); - evt->number[BTA_HF_CLIENT_NUMBER_LEN] = '\0'; + BCM_STRLCPY_S(evt->number, number, BTA_HF_CLIENT_NUMBER_LEN + 1); if (bta_hf_client_cb.p_cback) { (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_CNUM_EVT, evt); @@ -799,8 +794,7 @@ void bta_hf_client_binp(char *number) tBTA_HF_CLIENT_NUMBER *evt; if ((evt = osi_calloc(sizeof(tBTA_HF_CLIENT_NUMBER))) != NULL) { - strlcpy(evt->number, number, BTA_HF_CLIENT_NUMBER_LEN + 1); - evt->number[BTA_HF_CLIENT_NUMBER_LEN] = '\0'; + BCM_STRLCPY_S(evt->number, number, BTA_HF_CLIENT_NUMBER_LEN + 1); if (bta_hf_client_cb.p_cback) { (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_BINP_EVT, evt); diff --git a/components/bt/host/bluedroid/bta/hf_client/bta_hf_client_api.c b/components/bt/host/bluedroid/bta/hf_client/bta_hf_client_api.c index bcb456ab8f0..465bb5bcb32 100644 --- a/components/bt/host/bluedroid/bta/hf_client/bta_hf_client_api.c +++ b/components/bt/host/bluedroid/bta/hf_client/bta_hf_client_api.c @@ -145,8 +145,7 @@ void BTA_HfClientRegister(tBTA_SEC sec_mask, tBTA_HF_CLIENT_FEAT features, p_buf->features = features; p_buf->sec_mask = sec_mask; if (p_service_name) { - BCM_STRNCPY_S(p_buf->name, p_service_name, BTA_SERVICE_NAME_LEN); - p_buf->name[BTA_SERVICE_NAME_LEN] = '\0'; + BCM_STRLCPY_S(p_buf->name, p_service_name, BTA_SERVICE_NAME_LEN + 1); } else { p_buf->name[0] = '\0'; } @@ -294,7 +293,7 @@ void BTA_HfClientSendAT(UINT16 handle, tBTA_HF_CLIENT_AT_CMD_TYPE at, UINT32 val str_len = BTA_HF_CLIENT_MAX_LEN; } - strlcpy(p_buf->str, str, str_len + 1); + BCM_STRLCPY_S(p_buf->str, str, str_len + 1); } else { p_buf->str[0] = '\0'; } diff --git a/components/bt/host/bluedroid/bta/hf_client/bta_hf_client_at.c b/components/bt/host/bluedroid/bta/hf_client/bta_hf_client_at.c index 4b89796e252..c784cc2e002 100644 --- a/components/bt/host/bluedroid/bta/hf_client/bta_hf_client_at.c +++ b/components/bt/host/bluedroid/bta/hf_client/bta_hf_client_at.c @@ -1258,10 +1258,10 @@ static void bta_hf_client_dump_at(void) while (*p1 != '\0') { if (*p1 == '\r') { - strlcpy(p2, "", 4); + memcpy(p2, "", 4); p2 += 4; } else if (*p1 == '\n') { - strlcpy(p2, "", 4); + memcpy(p2, "", 4); p2 += 4; } else { *p2 = *p1; diff --git a/components/bt/host/bluedroid/btc/core/btc_config.c b/components/bt/host/bluedroid/btc/core/btc_config.c index d78615a7dfd..f2ab5a02282 100644 --- a/components/bt/host/bluedroid/btc/core/btc_config.c +++ b/components/bt/host/bluedroid/btc/core/btc_config.c @@ -186,7 +186,7 @@ bool btc_config_get_str(const char *section, const char *key, char *value, int * return false; } - strlcpy(value, stored_value, *size_bytes); + BCM_STRLCPY_S(value, stored_value, *size_bytes); *size_bytes = strlen(value) + 1; return true; diff --git a/components/bt/host/bluedroid/btc/core/btc_dev.c b/components/bt/host/bluedroid/btc/core/btc_dev.c index 424dfe93e59..1a24236ea74 100644 --- a/components/bt/host/bluedroid/btc/core/btc_dev.c +++ b/components/bt/host/bluedroid/btc/core/btc_dev.c @@ -75,8 +75,7 @@ void btc_dev_call_arg_deep_copy(btc_msg_t *msg, void *p_dest, void *p_src) case BTC_DEV_ACT_SET_DEVICE_NAME:{ dst->set_dev_name.device_name = (char *)osi_malloc((BTC_MAX_LOC_BD_NAME_LEN + 1) * sizeof(char)); if (dst->set_dev_name.device_name) { - BCM_STRNCPY_S(dst->set_dev_name.device_name, src->set_dev_name.device_name, BTC_MAX_LOC_BD_NAME_LEN); - dst->set_dev_name.device_name[BTC_MAX_LOC_BD_NAME_LEN] = '\0'; + BCM_STRLCPY_S(dst->set_dev_name.device_name, src->set_dev_name.device_name, BTC_MAX_LOC_BD_NAME_LEN + 1); } else { BTC_TRACE_ERROR("%s %d no mem\n",__func__, msg->act); } @@ -102,8 +101,7 @@ void btc_dev_cb_arg_deep_copy(btc_msg_t *msg, void *p_dest, void *p_src) case ESP_BT_DEV_NAME_RES_EVT:{ dst->name_res.name = (char *)osi_malloc((BTC_MAX_LOC_BD_NAME_LEN + 1) * sizeof(char)); if (dst->name_res.name) { - BCM_STRNCPY_S(dst->name_res.name, src->name_res.name, BTC_MAX_LOC_BD_NAME_LEN); - dst->name_res.name[BTC_MAX_LOC_BD_NAME_LEN] = '\0'; + BCM_STRLCPY_S(dst->name_res.name, src->name_res.name, BTC_MAX_LOC_BD_NAME_LEN + 1); } else { BTC_TRACE_ERROR("%s, malloc failed\n", __func__); } diff --git a/components/bt/host/bluedroid/btc/profile/std/gap/btc_gap_ble.c b/components/bt/host/bluedroid/btc/profile/std/gap/btc_gap_ble.c index 1d1384daeba..b1aa049d2e4 100644 --- a/components/bt/host/bluedroid/btc/profile/std/gap/btc_gap_ble.c +++ b/components/bt/host/bluedroid/btc/profile/std/gap/btc_gap_ble.c @@ -84,8 +84,11 @@ static void btc_gap_ble_get_dev_name_callback(UINT8 status, char *name) param.get_dev_name_cmpl.status = btc_btm_status_to_esp_status(status); param.get_dev_name_cmpl.name = (char *)osi_malloc(BTC_MAX_LOC_BD_NAME_LEN + 1); if (param.get_dev_name_cmpl.name) { - BCM_STRNCPY_S(param.get_dev_name_cmpl.name, name, BTC_MAX_LOC_BD_NAME_LEN); - param.get_dev_name_cmpl.name[BTC_MAX_LOC_BD_NAME_LEN] = '\0'; + if (name != NULL) { + BCM_STRLCPY_S(param.get_dev_name_cmpl.name, name, BTC_MAX_LOC_BD_NAME_LEN + 1); + } else { + param.get_dev_name_cmpl.name[0] = '\0'; + } } else { param.get_dev_name_cmpl.status = ESP_BT_STATUS_NOMEM; } @@ -2577,8 +2580,7 @@ void btc_gap_ble_arg_deep_copy(btc_msg_t *msg, void *p_dest, void *p_src) btc_ble_gap_args_t *dst = (btc_ble_gap_args_t *)p_dest; dst->set_dev_name.device_name = (char *)osi_malloc((BTC_MAX_LOC_BD_NAME_LEN + 1) * sizeof(char)); if (dst->set_dev_name.device_name) { - BCM_STRNCPY_S(dst->set_dev_name.device_name, src->set_dev_name.device_name, BTC_MAX_LOC_BD_NAME_LEN); - dst->set_dev_name.device_name[BTC_MAX_LOC_BD_NAME_LEN] = '\0'; + BCM_STRLCPY_S(dst->set_dev_name.device_name, src->set_dev_name.device_name, BTC_MAX_LOC_BD_NAME_LEN + 1); } else { BTC_TRACE_ERROR("%s %d no mem\n",__func__, msg->act); } diff --git a/components/bt/host/bluedroid/btc/profile/std/gap/btc_gap_bt.c b/components/bt/host/bluedroid/btc/profile/std/gap/btc_gap_bt.c index 0e8808bc29c..8ff3b7c6983 100644 --- a/components/bt/host/bluedroid/btc/profile/std/gap/btc_gap_bt.c +++ b/components/bt/host/bluedroid/btc/profile/std/gap/btc_gap_bt.c @@ -1088,8 +1088,11 @@ static void btc_gap_bt_get_dev_name_callback(UINT8 status, char *name) param.get_dev_name_cmpl.status = btc_btm_status_to_esp_status(status); param.get_dev_name_cmpl.name = (char *)osi_malloc(BTC_MAX_LOC_BD_NAME_LEN + 1); if (param.get_dev_name_cmpl.name) { - BCM_STRNCPY_S(param.get_dev_name_cmpl.name, name, BTC_MAX_LOC_BD_NAME_LEN); - param.get_dev_name_cmpl.name[BTC_MAX_LOC_BD_NAME_LEN] = '\0'; + if (name != NULL) { + BCM_STRLCPY_S(param.get_dev_name_cmpl.name, name, BTC_MAX_LOC_BD_NAME_LEN + 1); + } else { + param.get_dev_name_cmpl.name[0] = '\0'; + } } else { param.get_dev_name_cmpl.status = ESP_BT_STATUS_NOMEM; } @@ -1179,8 +1182,7 @@ void btc_gap_bt_arg_deep_copy(btc_msg_t *msg, void *p_dest, void *p_src) btc_gap_bt_args_t *dst = (btc_gap_bt_args_t *)p_dest; dst->bt_set_dev_name.device_name = (char *)osi_malloc((BTC_MAX_LOC_BD_NAME_LEN + 1) * sizeof(char)); if (dst->bt_set_dev_name.device_name) { - BCM_STRNCPY_S(dst->bt_set_dev_name.device_name, src->bt_set_dev_name.device_name, BTC_MAX_LOC_BD_NAME_LEN); - dst->bt_set_dev_name.device_name[BTC_MAX_LOC_BD_NAME_LEN] = '\0'; + BCM_STRLCPY_S(dst->bt_set_dev_name.device_name, src->bt_set_dev_name.device_name, BTC_MAX_LOC_BD_NAME_LEN + 1); } else { BTC_TRACE_ERROR("%s %d no mem\n", __func__, msg->act); } diff --git a/components/bt/host/bluedroid/stack/avdt/avdt_api.c b/components/bt/host/bluedroid/stack/avdt/avdt_api.c index 64d67209685..8279e27431d 100644 --- a/components/bt/host/bluedroid/stack/avdt/avdt_api.c +++ b/components/bt/host/bluedroid/stack/avdt/avdt_api.c @@ -1223,7 +1223,7 @@ UINT16 AVDT_SendReport(UINT8 handle, AVDT_REPORT_TYPE type, len = AVDT_MAX_CNAME_SIZE; } *p++ = (UINT8)len; - BCM_STRNCPY_S((char *)p, (char *)p_data->cname, AVDT_MAX_CNAME_SIZE + 1); + memcpy(p, p_data->cname, len); p += len; break; } diff --git a/components/bt/host/bluedroid/stack/btm/btm_ble.c b/components/bt/host/bluedroid/stack/btm/btm_ble.c index fd8bd60e3ca..d73eb9f9bbc 100644 --- a/components/bt/host/bluedroid/stack/btm/btm_ble.c +++ b/components/bt/host/bluedroid/stack/btm/btm_ble.c @@ -187,7 +187,7 @@ BOOLEAN BTM_SecAddBleDevice (BD_ADDR bd_addr, BD_NAME bd_name, tBT_DEVICE_TYPE d if (bd_name && bd_name[0]) { p_dev_rec->sec_flags |= BTM_SEC_NAME_KNOWN; - BCM_STRNCPY_S ((char *)p_dev_rec->sec_bd_name, (char *)bd_name, BTM_MAX_REM_BD_NAME_LEN); + BCM_STRLCPY_S ((char *)p_dev_rec->sec_bd_name, (char *)bd_name, BTM_MAX_REM_BD_NAME_LEN + 1); } p_dev_rec->device_type |= dev_type; p_dev_rec->ble.ble_addr_type = addr_type; diff --git a/components/bt/host/bluedroid/stack/btm/btm_ble_gap.c b/components/bt/host/bluedroid/stack/btm/btm_ble_gap.c index e1157669dc3..86a901d4b5f 100644 --- a/components/bt/host/bluedroid/stack/btm/btm_ble_gap.c +++ b/components/bt/host/bluedroid/stack/btm/btm_ble_gap.c @@ -2244,7 +2244,7 @@ void btm_ble_read_remote_name_cmpl(BOOLEAN status, BD_ADDR bda, UINT16 length, c btm_process_remote_name(bda, bd_name, length + 1, hci_status); #if (SMP_INCLUDED == TRUE) - btm_sec_rmt_name_request_complete (bda, (UINT8 *)p_name, hci_status); + btm_sec_rmt_name_request_complete (bda, (UINT8 *)bd_name, hci_status); #endif ///SMP_INCLUDED == TRUE } diff --git a/components/bt/host/bluedroid/stack/btm/btm_dev.c b/components/bt/host/bluedroid/stack/btm/btm_dev.c index 4e33b9a0d76..27c23a48d4d 100644 --- a/components/bt/host/bluedroid/stack/btm/btm_dev.c +++ b/components/bt/host/bluedroid/stack/btm/btm_dev.c @@ -115,7 +115,7 @@ BOOLEAN BTM_SecAddDevice (BD_ADDR bd_addr, DEV_CLASS dev_class, BD_NAME bd_name, if (bd_name && bd_name[0]) { p_dev_rec->sec_flags |= BTM_SEC_NAME_KNOWN; - BCM_STRNCPY_S ((char *)p_dev_rec->sec_bd_name, (char *)bd_name, BTM_MAX_REM_BD_NAME_LEN); + BCM_STRLCPY_S ((char *)p_dev_rec->sec_bd_name, (char *)bd_name, BTM_MAX_REM_BD_NAME_LEN + 1); } p_dev_rec->num_read_pages = 0; diff --git a/components/bt/host/bluedroid/stack/btm/btm_devctl.c b/components/bt/host/bluedroid/stack/btm/btm_devctl.c index dc04f26947c..e711ff9806d 100644 --- a/components/bt/host/bluedroid/stack/btm/btm_devctl.c +++ b/components/bt/host/bluedroid/stack/btm/btm_devctl.c @@ -496,16 +496,14 @@ tBTM_STATUS BTM_SetLocalDeviceName (char *p_name, tBT_DEVICE_TYPE name_type) if (name_type & BT_DEVICE_TYPE_BLE) { p = (UINT8 *)btm_cb.cfg.ble_bd_name; if (p != (UINT8 *)p_name) { - BCM_STRNCPY_S(btm_cb.cfg.ble_bd_name, p_name, BTM_MAX_LOC_BD_NAME_LEN); - btm_cb.cfg.ble_bd_name[BTM_MAX_LOC_BD_NAME_LEN] = '\0'; + BCM_STRLCPY_S(btm_cb.cfg.ble_bd_name, p_name, BTM_MAX_LOC_BD_NAME_LEN + 1); } } #if (CLASSIC_BT_INCLUDED == TRUE) if (name_type & BT_DEVICE_TYPE_BREDR) { p = (UINT8 *)btm_cb.cfg.bredr_bd_name; if (p != (UINT8 *)p_name) { - BCM_STRNCPY_S(btm_cb.cfg.bredr_bd_name, p_name, BTM_MAX_LOC_BD_NAME_LEN); - btm_cb.cfg.bredr_bd_name[BTM_MAX_LOC_BD_NAME_LEN] = '\0'; + BCM_STRLCPY_S(btm_cb.cfg.bredr_bd_name, p_name, BTM_MAX_LOC_BD_NAME_LEN + 1); } } #endif // #if (CLASSIC_BT_INCLUDED == TRUE) diff --git a/components/bt/host/bluedroid/stack/btm/btm_sec.c b/components/bt/host/bluedroid/stack/btm/btm_sec.c index c61137d13f5..52461ec9bfc 100644 --- a/components/bt/host/bluedroid/stack/btm/btm_sec.c +++ b/components/bt/host/bluedroid/stack/btm/btm_sec.c @@ -622,8 +622,7 @@ static BOOLEAN btm_sec_set_security_level (CONNECTION_TYPE conn_type, const char if (is_originator) { p_srec->orig_mx_chan_id = mx_chan_id; #if BTM_SEC_SERVICE_NAME_LEN > 0 - BCM_STRNCPY_S ((char *)p_srec->orig_service_name, p_name, BTM_SEC_SERVICE_NAME_LEN); - p_srec->orig_service_name[BTM_SEC_SERVICE_NAME_LEN] = '\0'; + BCM_STRLCPY_S((char *)p_srec->orig_service_name, p_name, BTM_SEC_SERVICE_NAME_LEN + 1); #endif /* clear out the old setting, just in case it exists */ #if (L2CAP_UCD_INCLUDED == TRUE) @@ -668,8 +667,7 @@ static BOOLEAN btm_sec_set_security_level (CONNECTION_TYPE conn_type, const char } else { p_srec->term_mx_chan_id = mx_chan_id; #if BTM_SEC_SERVICE_NAME_LEN > 0 - BCM_STRNCPY_S ((char *)p_srec->term_service_name, p_name, BTM_SEC_SERVICE_NAME_LEN); - p_srec->term_service_name[BTM_SEC_SERVICE_NAME_LEN] = '\0'; + BCM_STRLCPY_S((char *)p_srec->term_service_name, p_name, BTM_SEC_SERVICE_NAME_LEN + 1); #endif /* clear out the old setting, just in case it exists */ #if (L2CAP_UCD_INCLUDED == TRUE) @@ -3117,8 +3115,7 @@ void btm_sec_rmt_name_request_complete (UINT8 *p_bd_addr, UINT8 *p_bd_name, UINT if (p_dev_rec) { old_sec_state = p_dev_rec->sec_state; if (status == HCI_SUCCESS) { - BCM_STRNCPY_S ((char *)p_dev_rec->sec_bd_name, (char *)p_bd_name, BTM_MAX_REM_BD_NAME_LEN); - p_dev_rec->sec_bd_name[BTM_MAX_REM_BD_NAME_LEN] = '\0'; + BCM_STRLCPY_S((char *)p_dev_rec->sec_bd_name, (char *)p_bd_name, BTM_MAX_REM_BD_NAME_LEN + 1); p_dev_rec->sec_flags |= BTM_SEC_NAME_KNOWN; BTM_TRACE_EVENT ("setting BTM_SEC_NAME_KNOWN sec_flags:0x%x\n", p_dev_rec->sec_flags); } else { @@ -3861,8 +3858,7 @@ void btm_rem_oob_req (UINT8 *p) btm_cb.api.p_sp_callback) { memcpy (evt_data.bd_addr, p_dev_rec->bd_addr, BD_ADDR_LEN); memcpy (evt_data.dev_class, p_dev_rec->dev_class, DEV_CLASS_LEN); - BCM_STRNCPY_S((char *)evt_data.bd_name, (char *)p_dev_rec->sec_bd_name, BTM_MAX_REM_BD_NAME_LEN); - evt_data.bd_name[BTM_MAX_REM_BD_NAME_LEN] = '\0'; + BCM_STRLCPY_S((char *)evt_data.bd_name, (char *)p_dev_rec->sec_bd_name, BTM_MAX_REM_BD_NAME_LEN + 1); btm_sec_change_pairing_state(BTM_PAIR_STATE_WAIT_LOCAL_OOB_RSP); if ((*btm_cb.api.p_sp_callback) (BTM_SP_RMT_OOB_EVT, (tBTM_SP_EVT_DATA *)&evt_data) == BTM_NOT_AUTHORIZED) { diff --git a/components/bt/host/bluedroid/stack/btu/btu_hcif.c b/components/bt/host/bluedroid/stack/btu/btu_hcif.c index dd60c0c2b27..9d442facd36 100644 --- a/components/bt/host/bluedroid/stack/btu/btu_hcif.c +++ b/components/bt/host/bluedroid/stack/btu/btu_hcif.c @@ -1109,7 +1109,14 @@ static void btu_hcif_rmt_name_request_comp_evt (UINT8 *p, UINT16 evt_len) btm_process_remote_name (bd_addr, p, evt_len, status); #if (SMP_INCLUDED == TRUE) - btm_sec_rmt_name_request_complete (bd_addr, p, status); + BD_NAME rem_name; + UINT16 name_len; + + name_len = (evt_len < BD_NAME_LEN) ? evt_len : BD_NAME_LEN; + memset (rem_name, 0, sizeof(rem_name)); + memcpy (rem_name, p, name_len); + + btm_sec_rmt_name_request_complete (bd_addr, rem_name, status); #endif ///SMP_INCLUDED == TRUE } #endif // #if (CLASSIC_BT_INCLUDED == TRUE) diff --git a/components/bt/host/bluedroid/stack/gatt/gatt_utils.c b/components/bt/host/bluedroid/stack/gatt/gatt_utils.c index b929f70d3a6..82dc639f584 100644 --- a/components/bt/host/bluedroid/stack/gatt/gatt_utils.c +++ b/components/bt/host/bluedroid/stack/gatt/gatt_utils.c @@ -2625,7 +2625,7 @@ void gatt_dbg_display_uuid(tBT_UUID bt_uuid) bt_uuid.uu.uuid128[3], bt_uuid.uu.uuid128[2], bt_uuid.uu.uuid128[1], bt_uuid.uu.uuid128[0]); } else { - BCM_STRNCPY_S(str_buf, "Unknown UUID 0", 15); + BCM_STRLCPY_S(str_buf, "Unknown UUID 0", sizeof(str_buf)); } GATT_TRACE_DEBUG ("UUID=[%s]", str_buf); diff --git a/components/bt/host/bluedroid/stack/include/stack/bt_types.h b/components/bt/host/bluedroid/stack/include/stack/bt_types.h index 9d59bdda538..86b901d20d0 100644 --- a/components/bt/host/bluedroid/stack/include/stack/bt_types.h +++ b/components/bt/host/bluedroid/stack/include/stack/bt_types.h @@ -32,7 +32,7 @@ typedef int32_t INT32; // #define INLINE __inline #define BCM_STRCPY_S(x1,x2) strcpy((x1),(x2)) -#define BCM_STRNCPY_S(x1,x2,x3) strncpy((x1),(x2),(x3)) +#define BCM_STRLCPY_S(x1,x2,x3) strlcpy((x1),(x2),(x3)) #define BCM_STRCMP_S(x1,x2) strcmp((x1),(x2)) #define BCM_STRNCMP_S(x1,x2,x3) strncmp((x1),(x2),(x3))