浏览代码

third_party: nimble: Fix use of stack-allocated variable

The `baud_rate_command` was allocated on the stack and assigned to
a pointer used after the block ended, leading to undefined behavior,
i.e. HCI_VS_UPDATE_UART_HCI_BAUDRATE was randomly not sent at all.
Made the variable static to ensure it persists beyond the block.

Signed-off-by: Magdalena Kasenberg <magdalena.kasenberg@codecoup.pl>
Magdalena Kasenberg 2 周之前
父节点
当前提交
0ed59e88db
共有 1 个文件被更改,包括 1 次插入1 次删除
  1. 1 1
      third_party/nimble/transport/chipset/cc2564.c

+ 1 - 1
third_party/nimble/transport/chipset/cc2564.c

@@ -71,7 +71,7 @@ static bool ble_run_bts(const ResAppNum bts_file) {
 
     if (command->opcode == HCI_VS_UPDATE_UART_HCI_BAUDRATE) {
       PBL_LOG_D(LOG_DOMAIN_BT_STACK, LOG_LEVEL_INFO, "ble_bts: Setting baud rate to %d", HCI_BAUD_RATE);
-      BTSHCIUpdateBaudRateCommand baud_rate_command = {
+      static BTSHCIUpdateBaudRateCommand baud_rate_command = {
           .opcode = HCI_VS_UPDATE_UART_HCI_BAUDRATE,
           .size = sizeof(uint32_t),
           .type = HCI_H4_CMD,