From 6a16cbf4fdb665af81d7c55ad137e41e05ce7ea2 Mon Sep 17 00:00:00 2001 From: John Date: Sat, 17 Dec 2022 17:20:35 +0100 Subject: [PATCH] ignore invalid info response --- src/lib/ebus/device.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/lib/ebus/device.cpp b/src/lib/ebus/device.cpp index 5fe40ed2..f2c3a4d7 100755 --- a/src/lib/ebus/device.cpp +++ b/src/lib/ebus/device.cpp @@ -668,11 +668,9 @@ bool Device::read(symbol_t* value, bool isAvailable, ArbitrationState* arbitrati break; case ENH_RES_INFO: if (m_infoLen == 0) { - if (data <= 16) { // max length - m_infoLen = data; - m_infoPos = 0; - } - } else if (m_infoPos < m_infoLen) { + m_infoLen = data; + m_infoPos = 0; + } else if (m_infoPos < m_infoLen && m_infoPos < sizeof(m_infoBuf)) { m_infoBuf[m_infoPos++] = data; if (m_infoPos >= m_infoLen) { unsigned int val; @@ -758,6 +756,9 @@ bool Device::read(symbol_t* value, bool isAvailable, ArbitrationState* arbitrati m_infoLen = 0; m_infoId = 0xff; } + } else { + m_infoLen = 0; // reset on invalid response + m_infoId = 0xff; } break; case ENH_RES_ERROR_EBUS: