From ec5290ef80b599b78e755f2d957bdb8f4fe0ccc6 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Wed, 7 Jan 2026 19:58:30 -1000 Subject: [PATCH] [web_server] Use centralized length constants for buffer sizing --- esphome/components/web_server/web_server.cpp | 5 +---- esphome/core/entity_base.h | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/esphome/components/web_server/web_server.cpp b/esphome/components/web_server/web_server.cpp index 3a2ae79094..413b0e82f6 100644 --- a/esphome/components/web_server/web_server.cpp +++ b/esphome/components/web_server/web_server.cpp @@ -500,15 +500,12 @@ static void set_json_id(JsonObject &root, EntityBase *obj, const char *prefix, J // Format: {prefix}/{device?}/{name} // Buffer sizes use constants from entity_base.h validated in core/config.py #ifdef USE_DEVICES - // domain + "/" + device + "/" + name + null static constexpr size_t ID_BUF_SIZE = ESPHOME_DOMAIN_MAX_LEN + 1 + ESPHOME_DEVICE_NAME_MAX_LEN + 1 + ESPHOME_FRIENDLY_NAME_MAX_LEN + 1; - char id_buf[ID_BUF_SIZE]; #else - // domain + "/" + name + null static constexpr size_t ID_BUF_SIZE = ESPHOME_DOMAIN_MAX_LEN + 1 + ESPHOME_FRIENDLY_NAME_MAX_LEN + 1; - char id_buf[ID_BUF_SIZE]; #endif + char id_buf[ID_BUF_SIZE]; char *p = id_buf; memcpy(p, prefix, prefix_len); p += prefix_len; diff --git a/esphome/core/entity_base.h b/esphome/core/entity_base.h index 7208618832..4ed6a8024a 100644 --- a/esphome/core/entity_base.h +++ b/esphome/core/entity_base.h @@ -22,7 +22,7 @@ static constexpr size_t ESPHOME_FRIENDLY_NAME_MAX_LEN = 120; // Maximum domain length (longest: "alarm_control_panel" = 19) static constexpr size_t ESPHOME_DOMAIN_MAX_LEN = 20; -// Maximum size for object_id buffer (friendly_name + margin for sanitization) +// Maximum size for object_id buffer (friendly_name + null + margin) static constexpr size_t OBJECT_ID_MAX_LEN = 128; enum EntityCategory : uint8_t {