Merge pull request #13 from john30/master

check position
This commit is contained in:
Roland Jax
2014-11-20 10:25:44 +01:00
+5 -1
View File
@@ -175,7 +175,7 @@ result_t DataField::create(std::vector<std::string>::iterator& it,
break;
}
if (pos > maxPos) { // TODO check this in real offset as well
if (pos > maxPos) {
result = RESULT_ERR_INVALID_ARG; // invalid pos definition
break;
}
@@ -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 << "=";