1
0
mirror of https://github.com/esphome/esphome.git synced 2026-02-08 00:31:58 +00:00
This commit is contained in:
J. Nick Koston
2026-01-22 22:22:42 -10:00
parent 06bb81c1cd
commit ee3ef85e08

View File

@@ -825,28 +825,28 @@ void WiFiComponent::setup_ap_config_() {
if (this->ap_.get_ssid().empty()) {
// Build AP SSID from app name without heap allocation
// WiFi SSID max is 32 bytes, with MAC suffix we keep first 25 + last 7
static constexpr size_t MAX_SSID_LEN = 32;
static constexpr size_t PREFIX_LEN = 25;
static constexpr size_t SUFFIX_LEN = 7;
static constexpr size_t AP_SSID_MAX_LEN = 32;
static constexpr size_t AP_SSID_PREFIX_LEN = 25;
static constexpr size_t AP_SSID_SUFFIX_LEN = 7;
const std::string &app_name = App.get_name();
const char *name_ptr = app_name.c_str();
size_t name_len = app_name.length();
if (name_len <= MAX_SSID_LEN) {
if (name_len <= AP_SSID_MAX_LEN) {
// Name fits, use directly
this->ap_.set_ssid(name_ptr);
} else {
// Name too long, need to truncate into stack buffer
char ssid_buf[MAX_SSID_LEN + 1];
char ssid_buf[AP_SSID_MAX_LEN + 1];
if (App.is_name_add_mac_suffix_enabled()) {
// Keep first 25 chars and last 7 chars (MAC suffix), remove middle
memcpy(ssid_buf, name_ptr, PREFIX_LEN);
memcpy(ssid_buf + PREFIX_LEN, name_ptr + name_len - SUFFIX_LEN, SUFFIX_LEN);
memcpy(ssid_buf, name_ptr, AP_SSID_PREFIX_LEN);
memcpy(ssid_buf + AP_SSID_PREFIX_LEN, name_ptr + name_len - AP_SSID_SUFFIX_LEN, AP_SSID_SUFFIX_LEN);
} else {
memcpy(ssid_buf, name_ptr, MAX_SSID_LEN);
memcpy(ssid_buf, name_ptr, AP_SSID_MAX_LEN);
}
ssid_buf[MAX_SSID_LEN] = '\0';
ssid_buf[AP_SSID_MAX_LEN] = '\0';
this->ap_.set_ssid(ssid_buf);
}
}