From d405478a13c9f5711f5547d032e83d72321d6c2b Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 28 Mar 2025 09:39:38 +0100 Subject: [PATCH] fix deviceName length (#2482), formatting --- src/core/emsesp.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/core/emsesp.cpp b/src/core/emsesp.cpp index 3ef9c2a07..16a40e0b9 100644 --- a/src/core/emsesp.cpp +++ b/src/core/emsesp.cpp @@ -974,8 +974,10 @@ void EMSESP::process_deviceName(std::shared_ptr telegram) { if (telegram->offset > 27 || (telegram->offset + telegram->message_length) < 29) { return; } - char name[16]; - uint8_t len = telegram->offset + telegram->message_length - 27; + char name[16]; + // len including zero terminator, if there is one, otherwise copy to end of telegram + // https://github.com/emsesp/EMS-ESP32/discussions/2482#discussioncomment-12649817 + uint8_t len = telegram->offset + telegram->message_length - 26; strlcpy(name, (const char *)&telegram->message_data[27 - telegram->offset], len < 16 ? len : 16); char * c = name; while (isprint(*c)) { @@ -1314,7 +1316,7 @@ bool EMSESP::add_device(const uint8_t device_id, const uint8_t product_id, const flags = DeviceFlags::EMS_DEVICE_FLAG_CR120; default_name = "CR120"; } - if (product_id == 158 && strncmp(version,"73",2) == 0) { + if (product_id == 158 && strncmp(version, "73", 2) == 0) { flags = DeviceFlags::EMS_DEVICE_FLAG_HMC310; default_name = "HMC310"; }