mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 06:33:51 +00:00 
			
		
		
		
	Fix strlcpy() uses to make long SSIDs and passwords work (#3199)
Co-authored-by: Maurice Makaay <mmakaay1@xs4all.net>
This commit is contained in:
		| @@ -161,8 +161,8 @@ bool WiFiComponent::wifi_sta_connect_(const WiFiAP &ap) { | |||||||
|   // https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/network/esp_wifi.html#_CPPv417wifi_sta_config_t |   // https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/network/esp_wifi.html#_CPPv417wifi_sta_config_t | ||||||
|   wifi_config_t conf; |   wifi_config_t conf; | ||||||
|   memset(&conf, 0, sizeof(conf)); |   memset(&conf, 0, sizeof(conf)); | ||||||
|   strlcpy(reinterpret_cast<char *>(conf.sta.ssid), ap.get_ssid().c_str(), sizeof(conf.sta.ssid)); |   strncpy(reinterpret_cast<char *>(conf.sta.ssid), ap.get_ssid().c_str(), sizeof(conf.sta.ssid)); | ||||||
|   strlcpy(reinterpret_cast<char *>(conf.sta.password), ap.get_password().c_str(), sizeof(conf.sta.password)); |   strncpy(reinterpret_cast<char *>(conf.sta.password), ap.get_password().c_str(), sizeof(conf.sta.password)); | ||||||
|  |  | ||||||
|   // The weakest authmode to accept in the fast scan mode |   // The weakest authmode to accept in the fast scan mode | ||||||
|   if (ap.get_password().empty()) { |   if (ap.get_password().empty()) { | ||||||
| @@ -709,7 +709,7 @@ bool WiFiComponent::wifi_start_ap_(const WiFiAP &ap) { | |||||||
|  |  | ||||||
|   wifi_config_t conf; |   wifi_config_t conf; | ||||||
|   memset(&conf, 0, sizeof(conf)); |   memset(&conf, 0, sizeof(conf)); | ||||||
|   strlcpy(reinterpret_cast<char *>(conf.ap.ssid), ap.get_ssid().c_str(), sizeof(conf.ap.ssid)); |   strncpy(reinterpret_cast<char *>(conf.ap.ssid), ap.get_ssid().c_str(), sizeof(conf.ap.ssid)); | ||||||
|   conf.ap.channel = ap.get_channel().value_or(1); |   conf.ap.channel = ap.get_channel().value_or(1); | ||||||
|   conf.ap.ssid_hidden = ap.get_ssid().size(); |   conf.ap.ssid_hidden = ap.get_ssid().size(); | ||||||
|   conf.ap.max_connection = 5; |   conf.ap.max_connection = 5; | ||||||
| @@ -720,7 +720,7 @@ bool WiFiComponent::wifi_start_ap_(const WiFiAP &ap) { | |||||||
|     *conf.ap.password = 0; |     *conf.ap.password = 0; | ||||||
|   } else { |   } else { | ||||||
|     conf.ap.authmode = WIFI_AUTH_WPA2_PSK; |     conf.ap.authmode = WIFI_AUTH_WPA2_PSK; | ||||||
|     strlcpy(reinterpret_cast<char *>(conf.ap.password), ap.get_password().c_str(), sizeof(conf.ap.ssid)); |     strncpy(reinterpret_cast<char *>(conf.ap.password), ap.get_password().c_str(), sizeof(conf.ap.ssid)); | ||||||
|   } |   } | ||||||
|  |  | ||||||
| #if ESP_IDF_VERSION_MAJOR >= 4 | #if ESP_IDF_VERSION_MAJOR >= 4 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user