From 1a4f1038155a0661bffd6ea7e52551e9c4a8cc4e Mon Sep 17 00:00:00 2001 From: murinsel Date: Tue, 5 Mar 2024 00:24:28 +0100 Subject: [PATCH] Monitoring (watch) does not respect array bounds. #33 --- src/core/monitoring.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/core/monitoring.cpp b/src/core/monitoring.cpp index bc348f7f..5a08a6c5 100644 --- a/src/core/monitoring.cpp +++ b/src/core/monitoring.cpp @@ -432,20 +432,21 @@ size_t CMonitoringHandler::getExtraSizeForEscapedChars(const CIEC_ANY& paDataVal size_t CMonitoringHandler::getExtraSizeForEscapedCharsArray(const CIEC_ARRAY &paDataValue) { size_t retVal = 0; - - switch(paDataValue[0].getDataTypeID()){ + auto lowerBound = paDataValue.getLowerBound(); + auto upperBound = paDataValue.getUpperBound(); + switch(paDataValue[lowerBound].getDataTypeID()){ case CIEC_ANY::e_STRING: - for(size_t i = 0; i < paDataValue.size(); i++) { + for (auto i = lowerBound; i <= upperBound; i++) { retVal += forte::core::util::getExtraSizeForXMLEscapedChars(static_cast(paDataValue[static_cast(i)]).getStorage().c_str()) + 10; //for opening and closing quotes or apos } break; case CIEC_ANY::e_WSTRING: - for(size_t i = 0; i < paDataValue.size(); i++) { + for (auto i = lowerBound; i <= upperBound; i++) { retVal += forte::core::util::getExtraSizeForXMLEscapedChars(static_cast(paDataValue[static_cast(i)]).getValue()) + 10; //for opening and closing quotes or apos } break; case CIEC_ANY::e_STRUCT: - for(size_t i = 0; i < paDataValue.size(); i++) { + for (auto i = lowerBound; i <= upperBound; i++) { retVal += getExtraSizeForEscapedCharsStruct(static_cast(paDataValue[static_cast(i)])); } break;