diff --git a/src/MessageParser.cpp b/src/MessageParser.cpp
index fe5931c8675c3d11dc0aec0b51ce41fb26fc9ac1..5d2de01b244c0be17b8fa2e732de2638198f1f82 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 53dc18fb4d314d9a728d3f675a39cedd0253d7e0..1e3858d1c7759ba8808116931a57a7bc9c93780a 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 0f83c10ddc46e969d04e940c5a2ee2e98d9b260e..d2eee2a3d7855290e2b860eecee83c65631e87bf 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(