Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 22f07d0

Browse filesBrowse files
authored
fix(rmt): memset all config structs to zero before using (espressif#11203)
* fix(rmt): memset all config structs to zero to increase code safety
1 parent 7b0298b commit 22f07d0
Copy full SHA for 22f07d0

File tree

1 file changed

+9
-3
lines changed
Filter options

1 file changed

+9
-3
lines changed

‎cores/esp32/esp32-hal-rmt.c

Copy file name to clipboardExpand all lines: cores/esp32/esp32-hal-rmt.c
+9-3Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,8 @@ bool rmtSetCarrier(int pin, bool carrier_en, bool carrier_level, uint32_t freque
206206
log_w("GPIO %d - RMT Carrier must be a float percentage from 0 to 1. Setting to 50%.", pin);
207207
duty_percent = 0.5;
208208
}
209-
rmt_carrier_config_t carrier_cfg = {0};
209+
rmt_carrier_config_t carrier_cfg;
210+
memset((void *)&carrier_cfg, 0, sizeof(rmt_carrier_config_t));
210211
carrier_cfg.duty_cycle = duty_percent; // duty cycle
211212
carrier_cfg.frequency_hz = carrier_en ? frequency_Hz : 0; // carrier frequency in Hz
212213
carrier_cfg.flags.polarity_active_low = carrier_level; // carrier modulation polarity level
@@ -313,7 +314,8 @@ static bool _rmtWrite(int pin, rmt_data_t *data, size_t num_rmt_symbols, bool bl
313314
return false;
314315
}
315316

316-
rmt_transmit_config_t transmit_cfg = {0}; // loop mode disabled
317+
rmt_transmit_config_t transmit_cfg; // loop mode disabled
318+
memset((void *)&transmit_cfg, 0, sizeof(rmt_transmit_config_t));
317319
bool retCode = true;
318320

319321
RMT_MUTEX_LOCK(bus);
@@ -380,6 +382,7 @@ static bool _rmtRead(int pin, rmt_data_t *data, size_t *num_rmt_symbols, bool wa
380382

381383
// request reading RMT Channel Data
382384
rmt_receive_config_t receive_config;
385+
memset((void *)&receive_config, 0, sizeof(rmt_receive_config_t));
383386
receive_config.signal_range_min_ns = bus->signal_range_min_ns;
384387
receive_config.signal_range_max_ns = bus->signal_range_max_ns;
385388

@@ -530,6 +533,7 @@ bool rmtInit(int pin, rmt_ch_dir_t channel_direction, rmt_reserve_memsize_t mem_
530533
if (channel_direction == RMT_TX_MODE) {
531534
// TX Channel
532535
rmt_tx_channel_config_t tx_cfg;
536+
memset((void *)&tx_cfg, 0, sizeof(rmt_tx_channel_config_t));
533537
tx_cfg.gpio_num = pin;
534538
// CLK_APB for ESP32|S2|S3|C3 -- CLK_PLL_F80M for C6 -- CLK_XTAL for H2
535539
tx_cfg.clk_src = RMT_CLK_SRC_DEFAULT;
@@ -559,6 +563,7 @@ bool rmtInit(int pin, rmt_ch_dir_t channel_direction, rmt_reserve_memsize_t mem_
559563
} else {
560564
// RX Channel
561565
rmt_rx_channel_config_t rx_cfg;
566+
memset((void *)&rx_cfg, 0, sizeof(rmt_rx_channel_config_t));
562567
rx_cfg.gpio_num = pin;
563568
// CLK_APB for ESP32|S2|S3|C3 -- CLK_PLL_F80M for C6 -- CLK_XTAL for H2
564569
rx_cfg.clk_src = RMT_CLK_SRC_DEFAULT;
@@ -585,7 +590,8 @@ bool rmtInit(int pin, rmt_ch_dir_t channel_direction, rmt_reserve_memsize_t mem_
585590
}
586591

587592
// allocate memory for the RMT Copy encoder
588-
rmt_copy_encoder_config_t copy_encoder_config = {};
593+
rmt_copy_encoder_config_t copy_encoder_config;
594+
memset((void *)&copy_encoder_config, 0, sizeof(rmt_copy_encoder_config_t));
589595
if (rmt_new_copy_encoder(&copy_encoder_config, &bus->rmt_copy_encoder_h) != ESP_OK) {
590596
log_e("GPIO %d - RMT Encoder Memory Allocation error.", pin);
591597
goto Err;

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.