diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp b/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp index 0d34a5a64..e8f538dfe 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp @@ -106,7 +106,7 @@ wl_status_t ESP8266WiFiSTAClass::begin(const char* ssid, const char *passphrase, return WL_CONNECT_FAILED; } - if(passphrase && strlen(passphrase) > 63) { + if(passphrase && strlen(passphrase) > 64) { // fail passphrase too long! return WL_CONNECT_FAILED; } @@ -115,7 +115,10 @@ wl_status_t ESP8266WiFiSTAClass::begin(const char* ssid, const char *passphrase, strcpy(reinterpret_cast(conf.ssid), ssid); if(passphrase) { - strcpy(reinterpret_cast(conf.password), passphrase); + if (strlen(passphrase) == 64) // it's not a passphrase, is the PSK + memcpy(reinterpret_cast(conf.password), passphrase, 64); + else + strcpy(reinterpret_cast(conf.password), passphrase); } else { *conf.password = 0; }