Improve WiFi configuration handling by ensuring proper string termination

- Updated strncpy calls in wifi_cfg_apply_from_nvs and wifi_do_connect to prevent buffer overflows by reserving space for null termination.
- Added explicit null termination for SSID and password fields in the wifi_config_t structure.
This commit is contained in:
Robert McMahon 2025-12-27 18:00:19 -08:00
parent 128596bd67
commit 56ea987f75
2 changed files with 8 additions and 4 deletions

View File

@ -120,8 +120,10 @@ static int wifi_do_connect(int argc, char **argv) {
// Apply // Apply
wifi_config_t wifi_config = {0}; wifi_config_t wifi_config = {0};
strncpy((char *)wifi_config.sta.ssid, ssid, sizeof(wifi_config.sta.ssid)); strncpy((char *)wifi_config.sta.ssid, ssid, sizeof(wifi_config.sta.ssid) - 1);
strncpy((char *)wifi_config.sta.password, pass, sizeof(wifi_config.sta.password)); wifi_config.sta.ssid[sizeof(wifi_config.sta.ssid) - 1] = '\0';
strncpy((char *)wifi_config.sta.password, pass, sizeof(wifi_config.sta.password) - 1);
wifi_config.sta.password[sizeof(wifi_config.sta.password) - 1] = '\0';
ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config)); ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config));
ESP_ERROR_CHECK(esp_wifi_connect()); ESP_ERROR_CHECK(esp_wifi_connect());

View File

@ -78,9 +78,11 @@ bool wifi_cfg_apply_from_nvs(void) {
} }
wifi_config_t wifi_config = {0}; wifi_config_t wifi_config = {0};
strncpy((char *)wifi_config.sta.ssid, ssid, sizeof(wifi_config.sta.ssid)); strncpy((char *)wifi_config.sta.ssid, ssid, sizeof(wifi_config.sta.ssid) - 1);
wifi_config.sta.ssid[sizeof(wifi_config.sta.ssid) - 1] = '\0';
if (pass) { if (pass) {
strncpy((char *)wifi_config.sta.password, pass, sizeof(wifi_config.sta.password)); strncpy((char *)wifi_config.sta.password, pass, sizeof(wifi_config.sta.password) - 1);
wifi_config.sta.password[sizeof(wifi_config.sta.password) - 1] = '\0';
} }
ESP_LOGI(TAG, "Applying WiFi Config: SSID=%s", ssid); ESP_LOGI(TAG, "Applying WiFi Config: SSID=%s", ssid);