Commit Graph
100 Commits
Author SHA1 Message Date
zhanghaipeng c69d150565 fix(bt): update ESP32 libbtdm_app.a to 4a0f94d5
- Fix connection failure when using RPA with whitelist filtering
- Fix disconnect with reason 0x08 during full scan
- Fix peer RPA resolution failure when advertising with a local identity address
2026-06-29 10:38:51 +08:00
Zhang Hai Peng 59a740ca12 fix(ble/bluedroid): preserve HCI status on BLE 4.2 GAP failures
Return BTM_HCI_ERROR | hci_status from legacy BLE 4.2 GAP HCI command
paths instead of mapping failures to BTM_ILLEGAL_VALUE or
BTM_NO_RESOURCES. Add btm_ble_status_from_hci() helper and propagate
real status through scan start/stop completion callbacks.


(cherry picked from commit 47dd785a18)

Co-authored-by: zhanghaipeng <zhanghaipeng@espressif.com>
2026-06-26 20:24:54 +08:00
Zhang Hai Peng e9fce74445 feat(ble/bluedroid): Optimize Bluedroid memory usage
- Delete unused device records (~356B each)


(cherry picked from commit 7d1c0e9a32)

Co-authored-by: zhanghaipeng <zhanghaipeng@espressif.com>
2026-06-26 20:24:34 +08:00
Zhang Hai Peng 7b2b31bb0d fix(ble/bluedroid): cap Read By Type response length at ATT maximum
Read By Type Response Length is one octet (max 255). When MTU was
large enough to return a long characteristic value in one pair, the
server wrote (UINT8)(value_len + 2) and overflowed (e.g. 513 -> 1),
so the client rejected the PDU as GATT_INVALID_PDU (0x04).

Cap server value to 253 bytes per pair, clamp the length byte, and
continue long reads via Read Blob when the capped size is returned.


(cherry picked from commit 97905afccc)

Co-authored-by: zhanghaipeng <zhanghaipeng@espressif.com>
2026-06-26 20:24:16 +08:00
Zhang Hai Peng 54e7b74cc1 fix(ble/bluedroid): Fixed potential double Execute Write Response
(cherry picked from commit 0a93ccd3b3)

Co-authored-by: zhanghaipeng <zhanghaipeng@espressif.com>
2026-06-26 20:23:59 +08:00
Zhang Hai Peng f00c216ce2 fix(ble/bluedroid): preserve ATT error on prepare write completion
Skip prepare-write echo validation when the GATT stack reports a
non-success status. ATT Error Response carries no prepare-write echo
body (rsp_len=0), so the check incorrectly overwrote errors such as
GATT_INSUF_AUTHENTICATION (0x05) with GATT_INVALID_PDU (0x04).


(cherry picked from commit d5b9350d0f)

Co-authored-by: zhanghaipeng <zhanghaipeng@espressif.com>
2026-06-26 20:23:38 +08:00
Zhang Hai Peng 4bf3d52183 fix(ble/bluedroid): unblock sync HCI cmd on Command Status error
Release the BLE sync semaphore and record HCI status when a
synchronous command is rejected via Command Status, since no
Command Complete event follows.


(cherry picked from commit 29ae92f4ef)

Co-authored-by: zhanghaipeng <zhanghaipeng@espressif.com>
2026-06-26 20:16:49 +08:00
Zhang Hai Peng fab51c7925 fix(ble/bluedroid): set REQ_WAITING before GATTC service-change rediscovery
When service change cancels in-progress discovery, bta_gattc_disc_cmpl()
re-triggers discovery without marking auto_update as REQ_WAITING. If a
client command is queued in p_q_cmd, bta_gattc_start_discover() refuses
to restart and the command is never dispatched.


(cherry picked from commit 13926bb9bc)

Co-authored-by: zhanghaipeng <zhanghaipeng@espressif.com>
2026-06-26 20:16:32 +08:00
Zhang Hai Peng 50c719356c fix(ble/bluedroid): report conn param update failure for unknown BD_ADDR
Route unknown BD_ADDR and other immediate failures through the existing
need_cb path so ESP_GAP_BLE_UPDATE_CONN_PARAMS_EVT is always delivered.


(cherry picked from commit f9eaeb5e84)

Co-authored-by: zhanghaipeng <zhanghaipeng@espressif.com>
2026-06-26 20:16:14 +08:00
Zhang Hai Peng 95c5099ed9 fix(ble/bluedroid): add context to GATTC reg-notify cache warning
Include client_if, handle, bd_addr, and server cache state in the
warning logged when notification registration skips handle validation.


(cherry picked from commit 1085a32be8)

Co-authored-by: zhanghaipeng <zhanghaipeng@espressif.com>
2026-06-26 20:16:14 +08:00
Zhang Hai Peng feb1da9239 fix(ble/bluedroid): return ESP_ERR_INVALID_ARG for invalid conn params
Return ESP_ERR_INVALID_ARG instead of ESP_FAIL when connection
parameter validation fails


(cherry picked from commit 6c53838e66)

Co-authored-by: zhanghaipeng <zhanghaipeng@espressif.com>
2026-06-26 20:16:13 +08:00
Zhang Hai Peng 003a4007e5 fix(ble/bluedroid): reject adv data on legacy directed ext adv
(cherry picked from commit c339cec380)

Co-authored-by: zhanghaipeng <zhanghaipeng@espressif.com>
2026-06-26 20:15:54 +08:00
Zhang Hai Peng 2f8c3b6c1a fix(ble/bluedroid): skip identity conversion for static random direct connect
Do not rewrite static or non-resolvable random peer addresses to
identity type 0x03 when CONFIG_BT_BLE_RPA_SUPPORTED is enabled.


(cherry picked from commit 2ef10ef488)

Co-authored-by: zhanghaipeng <zhanghaipeng@espressif.com>
2026-06-26 20:15:35 +08:00
Zhang Hai Peng 7b924ab605 feat(ble/bluedroid): Add BLE SMP support for multi-ADV with static random addresses
(cherry picked from commit 7986e2faa8)

Co-authored-by: zhanghaipeng <zhanghaipeng@espressif.com>
2026-06-18 10:24:55 +08:00
Zhang Hai Peng 9602947c08 refactor(bt): migrate bt_hci_to_btsnoop to esp-pylib
Replace argparse with rich-click and use esp_pylib.logger for
standardized console output and fatal error handling.


(cherry picked from commit 3a7896f2c5)

Co-authored-by: zhanghaipeng <zhanghaipeng@espressif.com>
2026-06-16 15:34:11 +08:00
Zhang Hai Peng ab5c9ff59c fix(bt): Suppress gattc drop-notif warning for unregistered gatt_if
GATT stack broadcasts notifications to every client app, so unregistered
gatt_if instances were flooding logs even when another app had registered
the handle. Only warn when no client app registered for the handle.


(cherry picked from commit c18c8dc5e7)

Co-authored-by: zhanghaipeng <zhanghaipeng@espressif.com>
2026-06-10 15:24:43 +08:00
Zhang Hai Peng 427d82e114 fix(ble/bluedroid): Propagate create_attr_tab BTA failures in inter_cb
(cherry picked from commit 4f8027da11)

Co-authored-by: zhanghaipeng <zhanghaipeng@espressif.com>
2026-06-02 10:24:03 +08:00
Zhang Hai Peng 5b5a6209ce fix(ble/bluedroid): Validate signed-write perm vs AUTH in attr table check
(cherry picked from commit fce3fa337a)

Co-authored-by: zhanghaipeng <zhanghaipeng@espressif.com>
2026-06-02 10:24:03 +08:00
Zhang Hai Peng 14b2d9fda2 docs(bt): clarify BLE TX power priority and granularity
(cherry picked from commit 4ab49f267b)

Co-authored-by: zhanghaipeng <zhanghaipeng@espressif.com>
2026-06-02 10:23:44 +08:00
Zhang Hai Peng 95d1fe2056 docs(bt): clarify GATT client auth_req may trigger SMP
(cherry picked from commit 43734e7d7b)

Co-authored-by: zhanghaipeng <zhanghaipeng@espressif.com>
2026-06-02 10:23:43 +08:00
Zhang Hai Peng 8bd3e97b50 docs(bt/bluedroid): add usage note for esp_ble_get_cur_sendable_packets_num
(cherry picked from commit 27fc241384)

Co-authored-by: zhanghaipeng <zhanghaipeng@espressif.com>
2026-06-02 10:23:43 +08:00
Zhang Hai Peng f2428fc028 feat(ble/bluedroid): add auto-setting for is_aux parameter in esp_ble_gattc_enh_open
(cherry picked from commit 1a9f2af505)

Co-authored-by: zhanghaipeng <zhanghaipeng@espressif.com>
2026-06-02 10:23:43 +08:00
Zhang Hai Peng 89124f6c2a doc(ble/bluedroid): clarify callback notes to avoid time-consuming ops
(cherry picked from commit 4590b4bb34)

Co-authored-by: zhanghaipeng <zhanghaipeng@espressif.com>
2026-06-02 10:23:42 +08:00
Zhang Hai Peng 124debe5d5 fix(ble/bluedroid): Ensure HIGH_DUTY_ADV_INTERVAL config is applied in stack
(cherry picked from commit 82c5c1fef3)

Co-authored-by: zhanghaipeng <zhanghaipeng@espressif.com>
2026-06-02 10:23:42 +08:00
Zhang Hai Peng 55f922200a fix(bt): Add default BLE controller funcs reset enable
(cherry picked from commit 7c1cb4b296)

Co-authored-by: zhanghaipeng <zhanghaipeng@espressif.com>
2026-06-02 10:14:29 +08:00
Zhang Hai Peng 74c70062e2 fix(bt): Update bt lib for ESP32-C3 and ESP32-S3(51d9dfde)
- improve coded PHY performance under Wi-Fi coexistence


(cherry picked from commit 8da824cd0e)

Co-authored-by: zhanghaipeng <zhanghaipeng@espressif.com>
2026-05-28 14:45:20 +08:00
zhanghaipeng 747c9adeaa fix(bt/bluedroid): validate handle in esp_ble_gattc_register_for_notify 2026-05-15 17:48:39 +08:00
zhanghaipeng 0af57d731c feat(ble): Support BLE critical logs 2026-05-13 14:22:40 +08:00
zhanghaipeng 519131a671 fix(bluedroid): correct format specifier in BLE create CIS debug log 2026-05-12 15:45:41 +08:00
zhanghaipeng 102a899d23 fix(ble): Optimize connection interval minimum parameter check 2026-04-30 10:55:30 +08:00
zhanghaipeng 658ff8730b fix(bt): Update bt lib for ESP32-C3 and ESP32-S3(2f683593)
- Fixed read remote feature timeout when using coded phy
- Fixed disconnection issue(0x08) when using 125k coded phy
- Fixed disconnection issue(0x08) when updating connection param
- Fixed disconnection issue(0x08) when using multi connection
- Avoid error when adding duplicate device to whitelist
- Support disable channel assessment by vendor hci
- Support smaller connection interval (3.75 ms)
- Support duplicate exception list in EVT ADV
2026-04-28 18:26:22 +08:00
zhanghaipeng 74a053bd4e fix(bt/bluedroid): fix BLE SMP pairing failure on BLE-only devices when using default param 2026-04-01 12:10:16 +08:00
zhanghaipeng e3aac6f703 fix(ble): Fixed BLE assert in "emi.c" when low memory 2026-03-20 20:01:55 +08:00
zhanghaipeng 5a803144e8 fix(nimble): use pre-allocated buffer for HCI logging 2026-01-05 10:39:07 +08:00
zhanghaipeng 051077835c docs(ble): add flow diagrams to bluedroid BLE examples 2025-12-28 17:32:01 +08:00
zhanghaipeng 934970a06f feat(examples/bluedroid): add BLE ACL latency measurement example 2025-12-28 17:31:49 +08:00
zhanghaipeng fdeb5ad87a refactor(examples/bluedroid): Replace hardcoded ADV type values with macros 2025-12-28 16:40:37 +08:00
zhanghaipeng 8630040602 fix(bt/osi): add NULL check in osi_mutex_free and osi_sem_free (IDFGH-16853) 2025-12-28 11:19:39 +08:00
zhanghaipeng 6196298750 fix(bt/bluedroid): fix UAF in bta_gattc_enqueue for search service command 2025-12-28 11:19:39 +08:00
zhanghaipeng 7cd2f7b34d feat(examples/bluedroid): Add BLE time interval conversion macros for better readability
Add macros to convert time values from milliseconds to BLE interval units:
- ESP_BLE_GAP_ADV_ITVL_MS: Convert advertising interval (0.625ms unit)
- ESP_BLE_GAP_SCAN_ITVL_MS: Convert scan interval (0.625ms unit)
- ESP_BLE_GAP_SCAN_WIN_MS: Convert scan window (0.625ms unit)
- ESP_BLE_GAP_CONN_ITVL_MS: Convert connection interval (1.25ms unit)
- ESP_BLE_GAP_PERIODIC_ADV_ITVL_MS: Convert periodic adv interval (1.25ms unit)
- ESP_BLE_GAP_SUPERVISION_TIMEOUT_MS: Convert supervision timeout (10ms unit)
2025-12-28 11:19:39 +08:00
zhanghaipeng b6aed7e1c8 feat(ble/bluedroid): Increase maximum notify/indication registration count 2025-12-28 11:07:07 +08:00
zhanghaipeng 4ffd7b285b feat(ble/bluedroid): add periodic advertising create sync retry mechanism 2025-12-28 11:07:07 +08:00
zhanghaipeng 12225c457c fix(ble/bluedroid): Fix array index in set_periodic_adv_subevt_data 2025-12-28 11:07:07 +08:00
zhanghaipeng c5ebab70d8 fix(ble/bluedroid): Remove duplicate filter_policy in ext_conn_v2 HCI cmd 2025-12-28 11:07:07 +08:00
zhanghaipeng 6d49a99faa fix(ble/bluedroid): Fix heap buffer overflow in BTC_GAP_BLE_SET_PA_SUBEVT_DATA deep copy 2025-12-28 11:07:07 +08:00
zhanghaipeng 643d9c2387 fix(ble/bluedroid): Fix multiple out-of-bounds read vulnerabilities in GATT PDU handlers 2025-12-28 11:07:07 +08:00
zhanghaipeng 93cfbb8522 fix(ble/bluedroid): Fix out-of-bounds read in l2cble_process_sig_cmd 2025-12-28 11:07:07 +08:00
zhanghaipeng 597fc6e5c1 fix(ble/bluedroid): Fix integer underflow in gatt_process_read_by_type_rsp 2025-12-28 11:07:07 +08:00
zhanghaipeng da4793ce71 fix(ble/bluedroid): Improve robustness during host enable procedure 2025-12-23 10:24:00 +08:00
zhanghaipeng a721e94a0f fix(bt): fix BLE security issue in controller and HCI packet parser 2025-12-23 10:24:00 +08:00
zhanghaipeng c762832600 fix(ble/hci): Fix OOB read in ble_adv_scan_combined example 2025-12-23 10:24:00 +08:00
zhanghaipeng a36bf7fe14 fix(ble/bluedroid): Added security check in example Bluedroid_GATT_Server 2025-12-23 10:24:00 +08:00
Zhang Hai Peng 9a21040626 Merge branch 'bugfix/fix_ble_security_issue_2025_v2' into 'master'
fix(ble/bluedroid): Enhanced security in ble_ancs example

Closes BHOST2025-59

See merge request espressif/esp-idf!43800
2025-12-01 16:16:06 +08:00
zhanghaipeng f502b2aab1 fix(ble/bluedroid): Fix security issues in GATT module 2025-11-30 16:22:26 +08:00
zhanghaipeng b163685c06 fix(ble/bluedroid): Fix security issues in HCI module 2025-11-30 16:06:25 +08:00
zhanghaipeng 1ed5a4465d fix(ble/bluedroid): Fix security issues in GAP module 2025-11-30 15:48:24 +08:00
zhanghaipeng b03ff3cf21 fix(ble/bluedroid): Add length check in prepare write response 2025-11-30 15:00:26 +08:00
zhanghaipeng d2baf3b0d4 fix(ble/bluedroid): Add boundary check for adv_handle in btm_ble_adv_set_terminated_evt 2025-11-28 17:44:57 +08:00
zhanghaipeng e741f09e0f fix(ble/bluedroid): Fix VLA in a2dp_gatts_coex example 2025-11-27 20:00:55 +08:00
zhanghaipeng a6730c7da6 fix(ble/bluedroid): Add NULL checks in GATT APIs 2025-11-27 19:36:35 +08:00
zhanghaipeng b71c51564a fix(ble/bluedroid): Add NULL checks in esp_gap_ble_api 2025-11-27 19:28:21 +08:00
zhanghaipeng 4b44d8e814 fix(ble/bluedroid): Add NULL check in esp_ble_gap_add_device_to_resolving_list 2025-11-27 19:12:54 +08:00
zhanghaipeng 8e0f74a2cc fix(ble/bt): Add NULL check in esp_hid_device example 2025-11-27 18:05:33 +08:00
zhanghaipeng 8b5dd75368 fix(ble/bt): Add NULL check in esp_hid_host example 2025-11-27 18:05:20 +08:00
zhanghaipeng 773814c087 fix(ble/blufi): Add DH param length validation 2025-11-27 18:05:07 +08:00
zhanghaipeng b6b3b81bf6 fix(ble/bluedroid): Fix memory leak in ble_spp_server example 2025-11-27 18:04:54 +08:00
zhanghaipeng e26b60090d fix(ble/bluedroid): Use calloc in gatt_server example 2025-11-27 18:04:43 +08:00
zhanghaipeng 24e023e307 fix(ble/bluedroid): Use snprintf in ble_eddystone example 2025-11-27 18:04:32 +08:00
zhanghaipeng 7e876249df fix(ble/bluedroid): Add bounds check in ble_ancs example 2025-11-27 18:04:22 +08:00
zhanghaipeng 71efec78c5 fix(ble/bluedroid): Fix potential out-of-bounds issue
- add length check in hci_hal_h4_hdl_rx_packet to prevent OOB
- add adv data length check in btm_ble_cache_adv_data
- add indicate data length check in BTA_GATTS_HandleValueIndication
- add report length check in bta_hh_parse_keybd_rpt
- add report length check in BTA_HdSendReport
- add descriptor length check in BTA_HdRegisterApp
- prevent buffer overflow in attribute processing
2025-11-24 14:42:26 +08:00
zhanghaipeng e1d39f630f fix(ble/bluedroid): Fix potential CVE-2024-0039 out-of-bounds write in attp_build_value_cmd
- Reference: https://source.android.com/docs/security/bulletin/2024-03-01?hl=zh-cn
2025-11-24 14:42:26 +08:00
zhanghaipeng c5e50ccd19 fix(bt): Update esp32 libbtdm_app.a (15a18b1a)
- fix(ble): fixed BLE enable scan timeout
 - fix(ble): fixed crash in "btdm_controller_task"
2025-11-24 12:14:37 +08:00
zhanghaipeng 1f7fd91b5a fix(ble/bluedroid): Fix potential CVE-2020-0022 in reassemble_and_dispatch
- Reference: https://nvd.nist.gov/vuln/detail/CVE-2020-0022
2025-11-24 11:59:12 +08:00
zhanghaipeng 60a028fb17 feat(ble/blufi): Support setting BLE encryption for blufi 2025-11-21 16:41:33 +08:00
zhanghaipeng 9bfd9c5340 fix(ble/bluedroid): Fixed BLE incorrect device record count issue 2025-11-18 11:25:22 +08:00
zhanghaipeng 2dcbd64616 fix(ble/bluedroid): Fixed missing BLE connect and disconnect events 2025-10-28 16:56:07 +08:00
zhanghaipeng 9df828835c fix(ble/bluedroid): fix memory leak during deinit when service table is created but not started 2025-10-17 17:45:35 +08:00
zhanghaipeng 3c68650d7e feat(ble/bluedroid): add API to get local BLE IRK 2025-10-17 17:36:45 +08:00
zhanghaipeng ca2c78f53e fix(ble/bluedroid): prevent crash when deinit/disable host during scan
Crash occurs if the BLE host is deinitialized or disabled while scanning is still active.
This usage is not recommended.
2025-10-13 13:27:04 +08:00
zhanghaipeng 7ce921ed95 fix(ble/bluedroid): Fixed resolve adv data crash if host deinitialized or disabled 2025-09-29 11:57:30 +08:00
zhanghaipeng 45775a3e35 feat(ble/bluedroid): Added BLE debug LOG for bluedroid 2025-09-26 20:10:32 +08:00
zhanghaipeng 1952f0333c docs(ble): add advisory for CVE-2025-55297 found in Blufi example 2025-08-25 14:04:39 +08:00
zhanghaipeng 3f4bedd3a5 feat(blufi): Update BluFi document 2025-08-15 14:18:05 +08:00
zhanghaipeng 12df54e8d1 fix(ble/bluedroid): Fixed potential out-of-bounds memory access when resolve adv data 2025-08-11 13:08:14 +08:00
zhanghaipeng 8ec5410236 fix(bt): Update esp32 libbtdm_app.a (f1dc7d8)
- Improve ESP32 stability and security
2025-08-07 21:19:06 +08:00
zhanghaipeng 155c32be20 fix(bt/ble): Update esp32 libbtdm_app.a (722c907a)
- Fixed bt hci event was not report to host when hci command was sent
2025-08-01 19:21:28 +08:00
zhanghaipeng 50fe55ca59 fix(ble/bluedroid): set sec_conn only on successful pairing in ble_hid_device_demo 2025-07-28 15:49:59 +08:00
zhanghaipeng b6dc79af47 fix(ble/bluedroid): Fixed fail to disconnect when device record is cleared 2025-07-25 10:30:11 +08:00
zhanghaipeng ac385530af fix(ble/bluedroid): fix incorrect resolving_list_avail_size update 2025-07-25 10:27:53 +08:00
zhanghaipeng 61606a6f95 fix(ble/bluedroid): ensure resolving list is updated when the oldest device is removed 2025-07-24 21:29:27 +08:00
zhanghaipeng 48235c7b25 fix(ble/bluedroid): Fix issue causing BTM_GetSecurityFlags failed 2025-07-08 17:12:30 +08:00
zhanghaipeng a663a87fe0 fix(bt/ble): Update esp32 libbtdm_app.a (3a27e2e)
- Optimize check Access Address when receive connection request PDU
2025-07-03 10:26:48 +08:00
zhanghaipeng a29cd4ad5f fix(ble/bluedroid): fix build failure when some BLE features are disabled 2025-06-24 20:26:43 +08:00
zhanghaipeng 49a4325b15 fix(bt): Update bt lib for ESP32-C3 and ESP32-S3(4713a69)
- Fixed double free exception during BLE init under low memory
2025-06-05 11:10:25 +08:00
zhanghaipeng 8150573012 fix(ble/bluedroid): Fixed null pointer assert in l2c_link_check_send_pkts 2025-05-30 17:37:21 +08:00
zhanghaipeng 99121258d4 fix(ble/bluedroid): Fixed BLE SMP state machine inconsistency on disconnection 2025-05-29 10:50:50 +08:00
zhanghaipeng de9a367f13 feat(ble/bluedroid): Include SMP state in BLE status reporting 2025-05-29 10:36:26 +08:00
Zhang Hai Peng c91a897697 Merge branch 'bugfix/fix_send_delete_link_key_cmd_1' into 'master'
Bugfix/fix send delete link key cmd 1

Closes BLERP-1735

See merge request espressif/esp-idf!39424
2025-05-27 14:41:59 +08:00
zhanghaipeng 21391a45fd fix(ble/bluedroid): Fixed clear BLE device recored 2025-05-26 20:21:35 +08:00
zhanghaipeng 244d4f8fa7 fix(bt): Update bt lib for ESP32-C3 and ESP32-S3(4713205)
- Fix: Missing ADV reports after bonding and connection
2025-05-16 11:55:52 +08:00