diff --git a/src/Services/EventActionService.cpp b/src/Services/EventActionService.cpp index e2a403836d3862fce60caa09c3c49acde7d043ee..63f3e9f1944ddfd80c40889c8741615b8fecde13 100644 --- a/src/Services/EventActionService.cpp +++ b/src/Services/EventActionService.cpp @@ -25,9 +25,13 @@ void EventActionService::addEventActionDefinitions(Message message) { eventActionDefinitionArray[index].eventDefinitionID = message.readEnum16(); // Tests pass with message.dataSize - 3, message.dataSize - 4, but not // message.dataSize - 5 - message.readString(data, message.dataSize); - eventActionDefinitionArray[index].request = String<ECSS_EVENT_SERVICE_STRING_SIZE>( - data); + if (message.dataSize - 4 > ECSS_EVENT_SERVICE_STRING_SIZE) { // Should this be >= ? + ErrorHandler::reportInternalError(ErrorHandler::InternalErrorType::MessageTooLarge); + } else { + message.readString(data, message.dataSize); + eventActionDefinitionArray[index].request = String<ECSS_EVENT_SERVICE_STRING_SIZE>( + data); + } } } }