From 55a61bd172426df1cf710de6bf955d32d7e315cf Mon Sep 17 00:00:00 2001 From: Nikos Strimpas <nikos-strimpas@outlook.com> Date: Sun, 25 Sep 2022 09:06:22 +0000 Subject: [PATCH] Fix the vla warnings --- src/MessageParser.cpp | 6 +++--- src/Services/EventReportService.cpp | 12 ++---------- src/Services/StorageAndRetrievalService.cpp | 2 +- 3 files changed, 6 insertions(+), 14 deletions(-) diff --git a/src/MessageParser.cpp b/src/MessageParser.cpp index fe5931c8..5d2de01b 100644 --- a/src/MessageParser.cpp +++ b/src/MessageParser.cpp @@ -154,8 +154,8 @@ Message MessageParser::parseECSSTC(uint8_t* data) { } String<CCSDSMaxMessageSize> MessageParser::composeECSS(const Message& message, uint16_t size) { - uint8_t headerSize = ((message.packetType == Message::TM) ? ECSSSecondaryTMHeaderSize : ECSSSecondaryTCHeaderSize); - uint8_t header[headerSize]; + // Unfortunately to avoid using VLAs, we will create an array with the maximum size. + uint8_t header[ECSSSecondaryTMHeaderSize]; if (message.packetType == Message::TC) { header[0] = ECSSPUSVersion << 4U; // Assign the pusVersion = 2 @@ -180,7 +180,7 @@ String<CCSDSMaxMessageSize> MessageParser::composeECSS(const Message& message, u header[10] = (ticks) & 0xffU; } - String<CCSDSMaxMessageSize> dataString(header, headerSize); + String<CCSDSMaxMessageSize> dataString(header, ((message.packetType == Message::TM) ? ECSSSecondaryTMHeaderSize : ECSSSecondaryTCHeaderSize)); dataString.append(message.data, message.dataSize); // Make sure to reach the requested size diff --git a/src/Services/EventReportService.cpp b/src/Services/EventReportService.cpp index 53dc18fb..1e3858d1 100644 --- a/src/Services/EventReportService.cpp +++ b/src/Services/EventReportService.cpp @@ -81,13 +81,9 @@ void EventReportService::enableReportGeneration(Message message) { * @todo: Report an error if length > numberOfEvents */ uint16_t length = message.readUint16(); - Event eventID[length]; - for (uint16_t i = 0; i < length; i++) { - eventID[i] = static_cast<Event>(message.readEnum16()); - } if (length <= numberOfEvents) { for (uint16_t i = 0; i < length; i++) { - stateOfEvents[static_cast<uint16_t>(eventID[i])] = true; + stateOfEvents[message.readEnum16()] = true; } } disabledEventsCount = stateOfEvents.size() - stateOfEvents.count(); @@ -101,13 +97,9 @@ void EventReportService::disableReportGeneration(Message message) { * @todo: Report an error if length > numberOfEvents */ uint16_t length = message.readUint16(); - Event eventID[length]; - for (uint16_t i = 0; i < length; i++) { - eventID[i] = static_cast<Event>(message.readEnum16()); - } if (length <= numberOfEvents) { for (uint16_t i = 0; i < length; i++) { - stateOfEvents[static_cast<uint16_t>(eventID[i])] = false; + stateOfEvents[message.readEnum16()] = false; } } disabledEventsCount = stateOfEvents.size() - stateOfEvents.count(); diff --git a/src/Services/StorageAndRetrievalService.cpp b/src/Services/StorageAndRetrievalService.cpp index 0f83c10d..d2eee2a3 100644 --- a/src/Services/StorageAndRetrievalService.cpp +++ b/src/Services/StorageAndRetrievalService.cpp @@ -534,7 +534,7 @@ void StorageAndRetrievalService::deletePacketStores(Message& request) { uint16_t numOfPacketStores = request.readUint16(); if (numOfPacketStores == 0) { int numOfPacketStoresToDelete = 0; - etl::string<ECSSPacketStoreIdSize> packetStoresToDelete[packetStores.size()]; + etl::string<ECSSPacketStoreIdSize> packetStoresToDelete[ECSSMaxPacketStores]; for (auto& packetStore : packetStores) { if (packetStore.second.storageStatus) { ErrorHandler::reportError( -- GitLab