fixed 32/64 chars limits in ssid/key
This commit is contained in:
@@ -8,7 +8,6 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <queue>
|
#include <queue>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <cstring>
|
|
||||||
#include <atomic>
|
#include <atomic>
|
||||||
|
|
||||||
// esp-idf includes
|
// esp-idf includes
|
||||||
@@ -395,6 +394,16 @@ esp_err_t goe_wifi_enable_ap(bool enable, const config &config)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<size_t LENGTH>
|
||||||
|
size_t copyStrToBuf(uint8_t (&buf)[LENGTH], std::string_view str)
|
||||||
|
{
|
||||||
|
size_t cutLength = std::min(LENGTH, str.size());
|
||||||
|
std::copy(std::begin(str), std::begin(str) + cutLength, buf);
|
||||||
|
if (str.size() < LENGTH)
|
||||||
|
buf[str.size()] = '\0';
|
||||||
|
return cutLength;
|
||||||
|
}
|
||||||
|
|
||||||
wifi_config_t make_ap_config(const ap_config &ap_config)
|
wifi_config_t make_ap_config(const ap_config &ap_config)
|
||||||
{
|
{
|
||||||
wifi_config_t wifi_config;
|
wifi_config_t wifi_config;
|
||||||
@@ -408,13 +417,13 @@ wifi_config_t make_ap_config(const ap_config &ap_config)
|
|||||||
wifi_config.ap.password[0] = 0;
|
wifi_config.ap.password[0] = 0;
|
||||||
if (!ap_config.ssid.empty())
|
if (!ap_config.ssid.empty())
|
||||||
{
|
{
|
||||||
std::snprintf((char*)wifi_config.ap.ssid, sizeof(wifi_config.ap.ssid), "%s", ap_config.ssid.c_str());
|
auto ssidCutLength = copyStrToBuf(wifi_config.ap.ssid, ap_config.ssid);
|
||||||
wifi_config.ap.ssid_len = ap_config.ssid.size();
|
wifi_config.ap.ssid_len = ssidCutLength;
|
||||||
|
|
||||||
if (!ap_config.key.empty())
|
if (!ap_config.key.empty())
|
||||||
{
|
{
|
||||||
wifi_config.ap.authmode = ap_config.authmode;
|
wifi_config.ap.authmode = ap_config.authmode;
|
||||||
std::snprintf((char*)wifi_config.ap.password, sizeof(wifi_config.ap.password), "%s", ap_config.key.c_str());
|
copyStrToBuf(wifi_config.ap.password, ap_config.key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return wifi_config;
|
return wifi_config;
|
||||||
@@ -428,6 +437,12 @@ esp_err_t goe_wifi_set_ap_config(const config &config, const ap_config &ap_confi
|
|||||||
return ESP_FAIL;
|
return ESP_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ap_config.ssid.size() > 32)
|
||||||
|
{
|
||||||
|
ESP_LOGE(TAG, "SSID too long! (size=%zd)", ap_config.ssid.size());
|
||||||
|
return ESP_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
if (!ap_config.key.empty())
|
if (!ap_config.key.empty())
|
||||||
{
|
{
|
||||||
if (ap_config.key.size() < 8)
|
if (ap_config.key.size() < 8)
|
||||||
@@ -435,7 +450,7 @@ esp_err_t goe_wifi_set_ap_config(const config &config, const ap_config &ap_confi
|
|||||||
ESP_LOGE(TAG, "passphrase too short! (size=%zd)", ap_config.key.size());
|
ESP_LOGE(TAG, "passphrase too short! (size=%zd)", ap_config.key.size());
|
||||||
return ESP_FAIL;
|
return ESP_FAIL;
|
||||||
}
|
}
|
||||||
if (ap_config.key.size() > 63)
|
if (ap_config.key.size() > 64)
|
||||||
{
|
{
|
||||||
ESP_LOGE(TAG, "passphrase too long! (size=%zd)", ap_config.key.size());
|
ESP_LOGE(TAG, "passphrase too long! (size=%zd)", ap_config.key.size());
|
||||||
return ESP_FAIL;
|
return ESP_FAIL;
|
||||||
@@ -1296,12 +1311,12 @@ wifi_config_t make_sta_config(std::string_view ssid, std::string_view password,
|
|||||||
|
|
||||||
if (!ssid.empty())
|
if (!ssid.empty())
|
||||||
{
|
{
|
||||||
std::snprintf((char*)wifi_config.sta.ssid, sizeof(wifi_config.sta.ssid), "%s", ssid.data());
|
copyStrToBuf(wifi_config.sta.ssid, ssid);
|
||||||
|
|
||||||
if (!password.empty())
|
if (!password.empty())
|
||||||
{
|
{
|
||||||
wifi_config.sta.threshold.authmode = WIFI_AUTH_WEP;
|
wifi_config.sta.threshold.authmode = WIFI_AUTH_WEP;
|
||||||
std::snprintf((char*)wifi_config.sta.password, sizeof(wifi_config.sta.password), "%s", password.data());
|
copyStrToBuf(wifi_config.sta.password, password);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bssid)
|
if (bssid)
|
||||||
@@ -1329,7 +1344,7 @@ esp_err_t goe_wifi_sta_begin(const config &config, const wifi_entry &sta_config,
|
|||||||
return ESP_FAIL;
|
return ESP_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sta_config.ssid.size() > 31)
|
if (sta_config.ssid.size() > 32)
|
||||||
{
|
{
|
||||||
ESP_LOGE(TAG, "SSID too long! (size=%zd)", sta_config.ssid.size());
|
ESP_LOGE(TAG, "SSID too long! (size=%zd)", sta_config.ssid.size());
|
||||||
return ESP_FAIL;
|
return ESP_FAIL;
|
||||||
@@ -1343,7 +1358,7 @@ esp_err_t goe_wifi_sta_begin(const config &config, const wifi_entry &sta_config,
|
|||||||
return ESP_FAIL;
|
return ESP_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sta_config.key.size() > 63)
|
if (sta_config.key.size() > 64)
|
||||||
{
|
{
|
||||||
ESP_LOGE(TAG, "key too long! (size=%zd)", sta_config.key.size());
|
ESP_LOGE(TAG, "key too long! (size=%zd)", sta_config.key.size());
|
||||||
return ESP_FAIL;
|
return ESP_FAIL;
|
||||||
|
Reference in New Issue
Block a user