From 3c7819eaf28dfd98bcead0bef2f3f522cc7f023d Mon Sep 17 00:00:00 2001 From: zhiweijian Date: Mon, 19 Nov 2018 17:04:48 +0800 Subject: [PATCH] Component/bt: add check peer addr type in set adv params --- components/bt/bluedroid/api/include/api/esp_gap_ble_api.h | 2 +- components/bt/bluedroid/btc/profile/std/gap/btc_gap_ble.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/components/bt/bluedroid/api/include/api/esp_gap_ble_api.h b/components/bt/bluedroid/api/include/api/esp_gap_ble_api.h index 4e0f9d395..1115aa282 100644 --- a/components/bt/bluedroid/api/include/api/esp_gap_ble_api.h +++ b/components/bt/bluedroid/api/include/api/esp_gap_ble_api.h @@ -291,7 +291,7 @@ typedef struct { esp_ble_adv_type_t adv_type; /*!< Advertising type */ esp_ble_addr_type_t own_addr_type; /*!< Owner bluetooth device address type */ esp_bd_addr_t peer_addr; /*!< Peer device bluetooth device address */ - esp_ble_addr_type_t peer_addr_type; /*!< Peer device bluetooth device address type */ + esp_ble_addr_type_t peer_addr_type; /*!< Peer device bluetooth device address type, only support public address type and random address type */ esp_ble_adv_channel_t channel_map; /*!< Advertising channel map */ esp_ble_adv_filter_t adv_filter_policy; /*!< Advertising filter policy */ } esp_ble_adv_params_t; diff --git a/components/bt/bluedroid/btc/profile/std/gap/btc_gap_ble.c b/components/bt/bluedroid/btc/profile/std/gap/btc_gap_ble.c index c9d5f70b4..3077d7b70 100644 --- a/components/bt/bluedroid/btc/profile/std/gap/btc_gap_ble.c +++ b/components/bt/bluedroid/btc/profile/std/gap/btc_gap_ble.c @@ -452,6 +452,10 @@ static void btc_ble_start_advertising (esp_ble_adv_params_t *ble_adv_params, tBT status = ESP_BT_STATUS_PARM_INVALID; BTC_TRACE_ERROR("Invalid advertisting channel map parameters.\n"); } + if (!BLE_ISVALID_PARAM(ble_adv_params->peer_addr_type, BLE_ADDR_TYPE_PUBLIC, BLE_ADDR_TYPE_RANDOM)) { + status = ESP_BT_STATUS_PARM_INVALID; + BTC_TRACE_ERROR("Invalid advertisting peer address type parameters.\n"); + } if(status != ESP_BT_STATUS_SUCCESS) { if(start_adv_cback) { start_adv_cback(status);