From 0d44c9bacdfd637eae15bdc45ab625eecab26986 Mon Sep 17 00:00:00 2001 From: john30 Date: Wed, 11 Mar 2015 08:42:28 +0100 Subject: [PATCH] more bounds checks --- src/lib/ebus/data.cpp | 4 ++-- src/lib/ebus/data.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lib/ebus/data.cpp b/src/lib/ebus/data.cpp index c7113d25..488d6937 100644 --- a/src/lib/ebus/data.cpp +++ b/src/lib/ebus/data.cpp @@ -705,7 +705,7 @@ result_t StringDataField::writeSymbols(istringstream& input, if ((m_dataType.flags & BCD) != 0) output[baseOffset + offset - incr] = (unsigned char)((6+daysSinceSunday) % 7); // Sun=0x06 else - output[baseOffset + offset - incr] = (daysSinceSunday==0 ? 7 : daysSinceSunday); // Sun=0x07 + output[baseOffset + offset - incr] = (unsigned char)(daysSinceSunday==0 ? 7 : daysSinceSunday); // Sun=0x07 } if (value >= 2000) value -= 2000; @@ -891,7 +891,7 @@ NumberDataField::NumberDataField(const string name, const string comment, const unsigned char length, const unsigned char bitCount, const int divisor) : NumericDataField(name, comment, unit, dataType, partType, length, bitCount, - (dataType.bitCount % 8) == 0 ? 0 : (unsigned char)dataType.divisorOrFirstBit), + (unsigned char)((dataType.bitCount % 8) == 0 ? 0 : dataType.divisorOrFirstBit)), m_divisor(divisor), m_precision(0) { if (divisor > 1) diff --git a/src/lib/ebus/data.h b/src/lib/ebus/data.h index 948142e2..2f3320fa 100644 --- a/src/lib/ebus/data.h +++ b/src/lib/ebus/data.h @@ -305,7 +305,7 @@ public: PartType getPartType() const { return m_partType; } // @copydoc - virtual unsigned char getLength(PartType partType) { return partType == m_partType ? m_length : 0; }; + virtual unsigned char getLength(PartType partType) { return partType == m_partType ? m_length : (unsigned char)0; }; // re-use same position as previous field as not all bits of fully consumed yet /** @@ -557,7 +557,7 @@ public: const unsigned char length, const unsigned char bitCount, const map values) : NumericDataField(name, comment, unit, dataType, partType, length, bitCount, - (dataType.bitCount < 8) ? (unsigned char)dataType.divisorOrFirstBit : 0), + (unsigned char)((dataType.bitCount < 8) ? dataType.divisorOrFirstBit : 0)), m_values(values) {} /**