From 09f8031bff973a93ff10cb1bbf9b79ca776b571f Mon Sep 17 00:00:00 2001 From: Ken Van Hoeylandt Date: Sat, 25 Oct 2025 18:57:43 +0200 Subject: [PATCH] Fix for open Wi-Fi (#387) Don't encrypt password if there's no password set --- Documentation/ideas.md | 1 - Tactility/Source/service/wifi/WifiApSettings.cpp | 15 +++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/Documentation/ideas.md b/Documentation/ideas.md index e1ebe395..739501c3 100644 --- a/Documentation/ideas.md +++ b/Documentation/ideas.md @@ -2,7 +2,6 @@ ## Before release -- Fix Wi-Fi password(less) decryption crash - Make better esp_lcd driver (and test all devices) ## Higher Priority diff --git a/Tactility/Source/service/wifi/WifiApSettings.cpp b/Tactility/Source/service/wifi/WifiApSettings.cpp index 9429cec1..3c5ab5f0 100644 --- a/Tactility/Source/service/wifi/WifiApSettings.cpp +++ b/Tactility/Source/service/wifi/WifiApSettings.cpp @@ -132,7 +132,10 @@ bool load(const std::string& ssid, WifiApSettings& apSettings) { if (map.contains(AP_PROPERTIES_KEY_PASSWORD)) { std::string password_decrypted; - if (decrypt(map[AP_PROPERTIES_KEY_PASSWORD], password_decrypted)) { + const auto& encrypted_password = map[AP_PROPERTIES_KEY_PASSWORD]; + if (encrypted_password.empty()) { + apSettings.password = ""; + } else if (decrypt(encrypted_password, password_decrypted)) { apSettings.password = password_decrypted; } else { return false; @@ -148,7 +151,7 @@ bool load(const std::string& ssid, WifiApSettings& apSettings) { } if (map.contains(AP_PROPERTIES_KEY_CHANNEL)) { - apSettings.channel = std::stoi(map[AP_PROPERTIES_KEY_CHANNEL].c_str()); + apSettings.channel = std::stoi(map[AP_PROPERTIES_KEY_CHANNEL]); } else { apSettings.channel = 0; } @@ -167,8 +170,12 @@ bool save(const WifiApSettings& apSettings) { std::map map; std::string password_encrypted; - if (!encrypt(apSettings.password, password_encrypted)) { - return false; + if (!apSettings.password.empty()) { + if (!encrypt(apSettings.password, password_encrypted)) { + return false; + } + } else { + password_encrypted = ""; } map[AP_PROPERTIES_KEY_PASSWORD] = password_encrypted;