Skip to content

Commit d390c6f

Browse files
committed
Merge branch 'fix/stack_overflow_in_example_spp_initiator_v5.3' into 'release/v5.3'
Fix/stack overflow in example spp initiator (backport v5.3) See merge request espressif/esp-idf!32232
2 parents b81f351 + 7f0be0c commit d390c6f

File tree

8 files changed

+90
-20
lines changed

8 files changed

+90
-20
lines changed

examples/bluetooth/bluedroid/classic_bt/a2dp_sink/main/main.c

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: 2021-2023 Espressif Systems (Shanghai) CO LTD
2+
* SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD
33
*
44
* SPDX-License-Identifier: Unlicense OR CC0-1.0
55
*/
@@ -47,6 +47,17 @@ static void bt_av_hdl_stack_evt(uint16_t event, void *p_param);
4747
/*******************************
4848
* STATIC FUNCTION DEFINITIONS
4949
******************************/
50+
static char *bda2str(uint8_t * bda, char *str, size_t size)
51+
{
52+
if (bda == NULL || str == NULL || size < 18) {
53+
return NULL;
54+
}
55+
56+
uint8_t *p = bda;
57+
sprintf(str, "%02x:%02x:%02x:%02x:%02x:%02x",
58+
p[0], p[1], p[2], p[3], p[4], p[5]);
59+
return str;
60+
}
5061

5162
static void bt_app_dev_cb(esp_bt_dev_cb_event_t event, esp_bt_dev_cb_param_t *param)
5263
{
@@ -176,6 +187,7 @@ static void bt_av_hdl_stack_evt(uint16_t event, void *p_param)
176187

177188
void app_main(void)
178189
{
190+
char bda_str[18] = {0};
179191
/* initialize NVS — it is used to store PHY calibration data */
180192
esp_err_t err = nvs_flash_init();
181193
if (err == ESP_ERR_NVS_NO_FREE_PAGES || err == ESP_ERR_NVS_NEW_VERSION_FOUND) {
@@ -230,6 +242,7 @@ void app_main(void)
230242
pin_code[3] = '4';
231243
esp_bt_gap_set_pin(pin_type, 4, pin_code);
232244

245+
ESP_LOGI(BT_AV_TAG, "Own address:[%s]", bda2str((uint8_t *)esp_bt_dev_get_address(), bda_str, sizeof(bda_str)));
233246
bt_app_task_start_up();
234247
/* bluetooth device name, connection mode and profile set up */
235248
bt_app_work_dispatch(bt_av_hdl_stack_evt, BT_APP_EVT_STACK_UP, NULL, 0, NULL);

examples/bluetooth/bluedroid/classic_bt/a2dp_source/main/main.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -735,6 +735,7 @@ static void bt_av_hdl_avrc_ct_evt(uint16_t event, void *p_param)
735735

736736
void app_main(void)
737737
{
738+
char bda_str[18] = {0};
738739
/* initialize NVS — it is used to store PHY calibration data */
739740
esp_err_t ret = nvs_flash_init();
740741
if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {
@@ -788,6 +789,7 @@ void app_main(void)
788789
esp_bt_pin_code_t pin_code;
789790
esp_bt_gap_set_pin(pin_type, 0, pin_code);
790791

792+
ESP_LOGI(BT_AV_TAG, "Own address:[%s]", bda2str((uint8_t *)esp_bt_dev_get_address(), bda_str, sizeof(bda_str)));
791793
bt_app_task_start_up();
792794
/* Bluetooth device name, connection mode and profile set up */
793795
bt_app_work_dispatch(bt_av_hdl_stack_evt, BT_APP_STACK_UP_EVT, NULL, 0, NULL);

examples/bluetooth/bluedroid/classic_bt/bt_discovery/main/main.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,7 @@ static void bt_app_gap_start_up(void)
272272

273273
void app_main(void)
274274
{
275+
char bda_str[18] = {0};
275276
/* Initialize NVS — it is used to store PHY calibration data and save key-value pairs in flash memory*/
276277
esp_err_t ret = nvs_flash_init();
277278
if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {
@@ -304,5 +305,6 @@ void app_main(void)
304305
return;
305306
}
306307

308+
ESP_LOGI(GAP_TAG, "Own address:[%s]", bda2str((uint8_t *)esp_bt_dev_get_address(), bda_str, sizeof(bda_str)));
307309
bt_app_gap_start_up();
308310
}

examples/bluetooth/bluedroid/classic_bt/bt_hid_mouse_device/main/main.c

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: 2021-2023 Espressif Systems (Shanghai) CO LTD
2+
* SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD
33
*
44
* SPDX-License-Identifier: Unlicense OR CC0-1.0
55
*/
@@ -71,6 +71,18 @@ uint8_t hid_mouse_descriptor[] = {
7171
0xc0 // END_COLLECTION
7272
};
7373

74+
static char *bda2str(esp_bd_addr_t bda, char *str, size_t size)
75+
{
76+
if (bda == NULL || str == NULL || size < 18) {
77+
return NULL;
78+
}
79+
80+
uint8_t *p = bda;
81+
sprintf(str, "%02x:%02x:%02x:%02x:%02x:%02x",
82+
p[0], p[1], p[2], p[3], p[4], p[5]);
83+
return str;
84+
}
85+
7486
const int hid_mouse_descriptor_len = sizeof(hid_mouse_descriptor);
7587

7688
/**
@@ -158,16 +170,6 @@ void mouse_move_task(void *pvParameters)
158170
}
159171
}
160172

161-
static void print_bt_address(void)
162-
{
163-
const char *TAG = "bt_address";
164-
const uint8_t *bd_addr;
165-
166-
bd_addr = esp_bt_dev_get_address();
167-
ESP_LOGI(TAG, "my bluetooth address is %02X:%02X:%02X:%02X:%02X:%02X",
168-
bd_addr[0], bd_addr[1], bd_addr[2], bd_addr[3], bd_addr[4], bd_addr[5]);
169-
}
170-
171173
void esp_bt_gap_cb(esp_bt_gap_cb_event_t event, esp_bt_gap_cb_param_t *param)
172174
{
173175
const char *TAG = "esp_bt_gap_cb";
@@ -390,6 +392,7 @@ void app_main(void)
390392
{
391393
const char *TAG = "app_main";
392394
esp_err_t ret;
395+
char bda_str[18] = {0};
393396

394397
ret = nvs_flash_init();
395398
if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {
@@ -477,6 +480,6 @@ void app_main(void)
477480
esp_bt_pin_code_t pin_code;
478481
esp_bt_gap_set_pin(pin_type, 0, pin_code);
479482

480-
print_bt_address();
483+
ESP_LOGI(TAG, "Own address:[%s]", bda2str((uint8_t *)esp_bt_dev_get_address(), bda_str, sizeof(bda_str)));
481484
ESP_LOGI(TAG, "exiting");
482485
}

examples/bluetooth/bluedroid/classic_bt/bt_spp_initiator/main/console_uart.c

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
/*
2-
* SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
2+
* SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD
33
*
44
* SPDX-License-Identifier: Unlicense OR CC0-1.0
55
*/
66

7+
#include "stdlib.h"
78
#include "driver/uart.h"
89
#include "freertos/FreeRTOS.h"
910
#include "freertos/task.h"
@@ -31,7 +32,7 @@ extern void spp_msg_args_parser(char *buf, int len);
3132

3233
void spp_msg_handler(char *buf, int len)
3334
{
34-
ESP_LOGE(TAG_CNSL, "Command [%s]", buf);
35+
ESP_LOGI(TAG_CNSL, "Command [%s]", buf);
3536
spp_msg_args_parser(buf, len);
3637
}
3738

@@ -44,13 +45,18 @@ static void console_uart_task(void *pvParameters)
4445
spp_msg_parser_register_callback(parser, spp_msg_handler);
4546
spp_msg_show_usage();
4647
#define TMP_BUF_LEN 128
47-
uint8_t tmp_buf[128] = {0};
48+
uint8_t *tmp_buf = NULL;
49+
50+
if ((tmp_buf = (uint8_t *)calloc(TMP_BUF_LEN, sizeof(uint8_t))) == NULL) {
51+
ESP_LOGE(TAG_CNSL,"temp buf malloc fail");
52+
return;
53+
}
4854

4955
for (;;) {
5056
//Waiting for UART event.
5157
if (xQueueReceive(uart_queue, (void * )&event, (TickType_t)portMAX_DELAY)) {
5258
switch (event.type) {
53-
//Event of UART receving data
59+
//Event of UART receiving data
5460
case UART_DATA:
5561
{
5662
len = uart_read_bytes(CONSOLE_UART_NUM, tmp_buf, TMP_BUF_LEN, 0);
@@ -95,6 +101,8 @@ static void console_uart_task(void *pvParameters)
95101
}
96102
}
97103
}
104+
105+
free(tmp_buf);
98106
vTaskDelete(NULL);
99107
}
100108

examples/bluetooth/bluedroid/classic_bt/hfp_ag/main/main.c

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: 2021-2023 Espressif Systems (Shanghai) CO LTD
2+
* SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD
33
*
44
* SPDX-License-Identifier: Unlicense OR CC0-1.0
55
*/
@@ -32,6 +32,18 @@ enum {
3232
BT_APP_EVT_STACK_UP = 0,
3333
};
3434

35+
static char *bda2str(esp_bd_addr_t bda, char *str, size_t size)
36+
{
37+
if (bda == NULL || str == NULL || size < 18) {
38+
return NULL;
39+
}
40+
41+
uint8_t *p = bda;
42+
sprintf(str, "%02x:%02x:%02x:%02x:%02x:%02x",
43+
p[0], p[1], p[2], p[3], p[4], p[5]);
44+
return str;
45+
}
46+
3547
/* handler for bluetooth stack enabled events */
3648
static void bt_hf_hdl_stack_evt(uint16_t event, void *p_param)
3749
{
@@ -73,6 +85,7 @@ static void bt_hf_hdl_stack_evt(uint16_t event, void *p_param)
7385

7486
void app_main(void)
7587
{
88+
char bda_str[18] = {0};
7689
/* Initialize NVS — it is used to store PHY calibration data */
7790
esp_err_t ret = nvs_flash_init();
7891
if (ret == ESP_ERR_NVS_NO_FREE_PAGES) {
@@ -101,6 +114,7 @@ void app_main(void)
101114
return;
102115
}
103116

117+
ESP_LOGI(BT_HF_TAG, "Own address:[%s]", bda2str((uint8_t *)esp_bt_dev_get_address(), bda_str, sizeof(bda_str)));
104118
/* create application task */
105119
bt_app_task_start_up();
106120

examples/bluetooth/bluedroid/classic_bt/hfp_hf/main/main.c

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: 2021-2023 Espressif Systems (Shanghai) CO LTD
2+
* SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD
33
*
44
* SPDX-License-Identifier: Unlicense OR CC0-1.0
55
*/
@@ -32,6 +32,18 @@ static uint8_t peer_bdname_len;
3232

3333
static const char remote_device_name[] = "ESP_HFP_AG";
3434

35+
static char *bda2str(esp_bd_addr_t bda, char *str, size_t size)
36+
{
37+
if (bda == NULL || str == NULL || size < 18) {
38+
return NULL;
39+
}
40+
41+
uint8_t *p = bda;
42+
sprintf(str, "%02x:%02x:%02x:%02x:%02x:%02x",
43+
p[0], p[1], p[2], p[3], p[4], p[5]);
44+
return str;
45+
}
46+
3547
static bool get_name_from_eir(uint8_t *eir, char *bdname, uint8_t *bdname_len)
3648
{
3749
uint8_t *rmt_bdname = NULL;
@@ -151,6 +163,7 @@ static void bt_hf_client_hdl_stack_evt(uint16_t event, void *p_param);
151163

152164
void app_main(void)
153165
{
166+
char bda_str[18] = {0};
154167
/* Initialize NVS — it is used to store PHY calibration data */
155168
esp_err_t ret = nvs_flash_init();
156169
if (ret == ESP_ERR_NVS_NO_FREE_PAGES) {
@@ -186,6 +199,7 @@ void app_main(void)
186199
return;
187200
}
188201

202+
ESP_LOGI(BT_HF_TAG, "Own address:[%s]", bda2str((uint8_t *)esp_bt_dev_get_address(), bda_str, sizeof(bda_str)));
189203
/* create application task */
190204
bt_app_task_start_up();
191205

examples/bluetooth/esp_hid_host/main/esp_hid_host_main.c

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: 2021-2023 Espressif Systems (Shanghai) CO LTD
2+
* SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD
33
*
44
* SPDX-License-Identifier: Unlicense OR CC0-1.0
55
*/
@@ -51,6 +51,18 @@
5151

5252
static const char *TAG = "ESP_HIDH_DEMO";
5353

54+
static char *bda2str(esp_bd_addr_t bda, char *str, size_t size)
55+
{
56+
if (bda == NULL || str == NULL || size < 18) {
57+
return NULL;
58+
}
59+
60+
uint8_t *p = bda;
61+
sprintf(str, "%02x:%02x:%02x:%02x:%02x:%02x",
62+
p[0], p[1], p[2], p[3], p[4], p[5]);
63+
return str;
64+
}
65+
5466
void hidh_callback(void *handler_args, esp_event_base_t base, int32_t id, void *event_data)
5567
{
5668
esp_hidh_event_t event = (esp_hidh_event_t)id;
@@ -165,6 +177,7 @@ void ble_store_config_init(void);
165177
#endif
166178
void app_main(void)
167179
{
180+
char bda_str[18] = {0};
168181
esp_err_t ret;
169182
#if HID_HOST_MODE == HIDH_IDLE_MODE
170183
ESP_LOGE(TAG, "Please turn on BT HID host or BLE!");
@@ -188,6 +201,7 @@ void app_main(void)
188201
};
189202
ESP_ERROR_CHECK( esp_hidh_init(&config) );
190203

204+
ESP_LOGI(TAG, "Own address:[%s]", bda2str((uint8_t *)esp_bt_dev_get_address(), bda_str, sizeof(bda_str)));
191205
#if CONFIG_BT_NIMBLE_ENABLED
192206
/* XXX Need to have template for store */
193207
ble_store_config_init();

0 commit comments

Comments
 (0)