diff --git a/esphome/components/web_server_idf/utils.cpp b/esphome/components/web_server_idf/utils.cpp index 5bdd219944f..d9c43bd6c7a 100644 --- a/esphome/components/web_server_idf/utils.cpp +++ b/esphome/components/web_server_idf/utils.cpp @@ -1,5 +1,4 @@ #ifdef USE_ESP32 -#include #include #include #include "esphome/core/helpers.h" @@ -56,15 +55,13 @@ optional query_key_value(const char *query_url, size_t query_len, c return {}; } - // Use stack buffer for typical query strings, heap fallback for large ones - SmallBufferWithHeapFallback<256, char> val(query_len); - - if (httpd_query_key_value(query_url, key, val.get(), query_len) != ESP_OK) { + char val[CONFIG_HTTPD_MAX_URI_LEN + 1]; + if (httpd_query_key_value(query_url, key, val, query_len) != ESP_OK) { return {}; } - url_decode(val.get()); - return {val.get()}; + url_decode(val); + return {val}; } bool query_has_key(const char *query_url, size_t query_len, const char *key) { diff --git a/esphome/components/web_server_idf/web_server_idf.cpp b/esphome/components/web_server_idf/web_server_idf.cpp index 9ce4b3673d5..8e1623f0998 100644 --- a/esphome/components/web_server_idf/web_server_idf.cpp +++ b/esphome/components/web_server_idf/web_server_idf.cpp @@ -422,11 +422,11 @@ static auto search_query_sources(httpd_req_t *req, const std::string &post_query if (len == 0) { return {}; } - SmallBufferWithHeapFallback<256, char> buf(len + 1); - if (httpd_req_get_url_query_str(req, buf.get(), len + 1) != ESP_OK) { + char buf[AsyncWebServerRequest::URL_BUF_SIZE]; + if (httpd_req_get_url_query_str(req, buf, len + 1) != ESP_OK) { return {}; } - return func(buf.get(), len, name); + return func(buf, len, name); } optional AsyncWebServerRequest::find_query_value_(const char *name) const {