From b391fda60bb3364413cb14df434f22ddaea62504 Mon Sep 17 00:00:00 2001 From: "jgesser@gmail.com" Date: Fri, 27 Apr 2018 10:35:49 -0300 Subject: [PATCH] Fixed SSID length limit to 32 bytes --- libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp | 7 +++++-- libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp | 5 ++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp b/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp index 1d8cadfdb1..f151e932e3 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp @@ -104,7 +104,7 @@ wl_status_t ESP8266WiFiSTAClass::begin(const char* ssid, const char *passphrase, return WL_CONNECT_FAILED; } - if(!ssid || *ssid == 0x00 || strlen(ssid) > 31) { + if(!ssid || *ssid == 0x00 || strlen(ssid) > 32) { // fail SSID too long or missing! return WL_CONNECT_FAILED; } @@ -519,7 +519,10 @@ wl_status_t ESP8266WiFiSTAClass::status() { String ESP8266WiFiSTAClass::SSID() const { struct station_config conf; wifi_station_get_config(&conf); - return String(reinterpret_cast(conf.ssid)); + char tmp[33]; //SSID is 32 chars plus null term + memcpy(tmp, conf.ssid, sizeof(conf.ssid)); + tmp[32] = 0; //null term in case of 32 byte ssid + return String(reinterpret_cast(tmp)); } /** diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp b/libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp index 6ce8d3d2c0..2915062438 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp @@ -187,7 +187,10 @@ String ESP8266WiFiScanClass::SSID(uint8_t i) { return ""; } - return String(reinterpret_cast(it->ssid)); + char tmp[33]; //SSID is 32 byte plus null term + memcpy(tmp, it->ssid, sizeof(it->ssid)); + tmp[32] = 0; //null term in case of 32 byte ssid + return String(reinterpret_cast(tmp)); }