From 36d0a20a87792e6a00fdac774d9dcb187cd0eb8c Mon Sep 17 00:00:00 2001 From: Luo Xu Date: Thu, 30 Oct 2025 13:43:14 +0800 Subject: [PATCH] fix(ble_mesh): check data length before assigning adv data pointer (cherry picked from commit 6202aa89a6fd34137e4f52342bb5f5cdc8d8ae2b) Co-authored-by: luoxu --- components/bt/esp_ble_mesh/core/bluedroid_host/adapter.c | 2 +- components/bt/esp_ble_mesh/core/nimble_host/adapter.c | 2 +- components/bt/esp_ble_mesh/core/scan.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/components/bt/esp_ble_mesh/core/bluedroid_host/adapter.c b/components/bt/esp_ble_mesh/core/bluedroid_host/adapter.c index d6f51bfc9d..fd42502fda 100644 --- a/components/bt/esp_ble_mesh/core/bluedroid_host/adapter.c +++ b/components/bt/esp_ble_mesh/core/bluedroid_host/adapter.c @@ -223,7 +223,7 @@ void bt_mesh_ble_ext_adv_report(tBTM_BLE_EXT_ADV_REPORT *ext_adv_report) memcpy(adv_rpt.dir_addr, ext_adv_report->dir_addr, BLE_MESH_ADDR_LEN); adv_rpt.addr_type = ext_adv_report->addr_type; - adv_rpt.data = ext_adv_report->adv_data; + adv_rpt.data = ext_adv_report->adv_data_len ? ext_adv_report->adv_data : NULL; adv_rpt.length = ext_adv_report->adv_data_len; adv_rpt.rssi = ext_adv_report->rssi; adv_rpt.event_type = ext_adv_report->event_type; diff --git a/components/bt/esp_ble_mesh/core/nimble_host/adapter.c b/components/bt/esp_ble_mesh/core/nimble_host/adapter.c index 60478e93e7..f5fd0279fc 100644 --- a/components/bt/esp_ble_mesh/core/nimble_host/adapter.c +++ b/components/bt/esp_ble_mesh/core/nimble_host/adapter.c @@ -474,7 +474,7 @@ void bt_mesh_ble_ext_adv_report(struct ble_gap_ext_disc_desc *desc) /* Here, only a shallow copy needs to be implemented; * deep copying behavior occurs in btc_ble_mesh_ble_copy_req_data. */ - adv_rpt.data = desc->data; + adv_rpt.data = desc->length_data ? desc->data : NULL; adv_rpt.event_type = desc->props; adv_rpt.addr_type = desc->addr.type; diff --git a/components/bt/esp_ble_mesh/core/scan.c b/components/bt/esp_ble_mesh/core/scan.c index d161061ca7..df6f22e117 100644 --- a/components/bt/esp_ble_mesh/core/scan.c +++ b/components/bt/esp_ble_mesh/core/scan.c @@ -380,7 +380,7 @@ static void inline callback_ble_adv_pkt(const bt_mesh_addr_t *addr, adv_rpt.addr_type = addr->type; adv_rpt.adv_type = adv_type; adv_rpt.length = length; - adv_rpt.data = data; + adv_rpt.data = length ? data : NULL; adv_rpt.rssi = rssi; bt_mesh_ble_scan_cb_evt_to_btc(&adv_rpt); }