diff --git a/libraries/WiFi/src/WiFiAP.cpp b/libraries/WiFi/src/WiFiAP.cpp index 8f96add91bc25aff8ebcd8cedc655f7cc89d0f4e..8b7bbf157012852bbefc126a84c8c197e7c77003 100644 --- a/libraries/WiFi/src/WiFiAP.cpp +++ b/libraries/WiFi/src/WiFiAP.cpp @@ -94,25 +94,28 @@ bool WiFiAPClass::softAP(const char* ssid, const char* passphrase, int channel, if(!WiFi.enableAP(true)) { // enable AP failed + log_e("enable AP first!"); return false; } - if(!ssid || *ssid == 0 || strlen(ssid) > 31) { - // fail SSID too long or missing! + if(!ssid || *ssid == 0) { + // fail SSID missing + log_e("SSID missing!"); return false; } - if(passphrase && (strlen(passphrase) > 63 || strlen(passphrase) < 8)) { - // fail passphrase to long or short! + if(passphrase && (strlen(passphrase) > 0 && strlen(passphrase) < 8)) { + // fail passphrase too short + log_e("passphrase too short!"); return false; } esp_wifi_start(); wifi_config_t conf; - strcpy(reinterpret_cast(conf.ap.ssid), ssid); + strlcpy(reinterpret_cast(conf.ap.ssid), ssid, sizeof(conf.ap.ssid)); conf.ap.channel = channel; - conf.ap.ssid_len = strlen(ssid); + conf.ap.ssid_len = strlen(reinterpret_cast(conf.ap.ssid)); conf.ap.ssid_hidden = ssid_hidden; conf.ap.max_connection = max_connection; conf.ap.beacon_interval = 100; @@ -122,7 +125,7 @@ bool WiFiAPClass::softAP(const char* ssid, const char* passphrase, int channel, *conf.ap.password = 0; } else { conf.ap.authmode = WIFI_AUTH_WPA2_PSK; - strcpy(reinterpret_cast(conf.ap.password), passphrase); + strlcpy(reinterpret_cast(conf.ap.password), passphrase, sizeof(conf.ap.password)); } wifi_config_t conf_current;