From 1083ef24b8d057bb0cc258bf26c6a34d7477c3cc Mon Sep 17 00:00:00 2001 From: john30 Date: Thu, 20 Nov 2014 10:17:32 +0100 Subject: [PATCH] again --- src/lib/ebus/data.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/lib/ebus/data.cpp b/src/lib/ebus/data.cpp index a464d9de..502fdf2e 100644 --- a/src/lib/ebus/data.cpp +++ b/src/lib/ebus/data.cpp @@ -360,6 +360,7 @@ unsigned char SingleDataField::getNextOffset() result_t SingleDataField::read(SymbolString& masterData, SymbolString& slaveData, std::ostringstream& output, bool verbose, char separator) { + unsigned char maxPos = 16; SymbolString& input = m_partType == pt_masterData ? masterData : slaveData; unsigned char baseOffset; switch (m_partType) @@ -374,6 +375,9 @@ result_t SingleDataField::read(SymbolString& masterData, SymbolString& slaveData return RESULT_ERR_INVALID_ARG; // invalid part type } + if (m_offset + m_length > maxPos) { + return RESULT_ERR_INVALID_ARG; // invalid pos definition + } if (verbose) output << m_name << "=";