From 9e50005531768778298a98f91c631c0629ed4554 Mon Sep 17 00:00:00 2001 From: jdfiguer Date: Wed, 22 May 2024 16:53:57 -0400 Subject: [PATCH] Fix #2529, Adds snprintf check return value in EVS_SendViaPorts --- modules/evs/fsw/src/cfe_evs_task.h | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/modules/evs/fsw/src/cfe_evs_task.h b/modules/evs/fsw/src/cfe_evs_task.h index e765adecd..8cacfe0f4 100644 --- a/modules/evs/fsw/src/cfe_evs_task.h +++ b/modules/evs/fsw/src/cfe_evs_task.h @@ -60,14 +60,17 @@ #define CFE_EVS_MAX_FILTER_COUNT 65535 #define CFE_EVS_MAX_SQUELCH_COUNT 255 #define CFE_EVS_PIPE_NAME "EVS_CMD_PIPE" -#define CFE_EVS_MAX_PORT_MSG_LENGTH (CFE_MISSION_EVS_MAX_MESSAGE_LENGTH + OS_MAX_API_NAME + 30) +#define CFE_EVS_MAX_PORT_MSG_LENGTH (CFE_MISSION_EVS_MAX_MESSAGE_LENGTH + OS_MAX_API_NAME + 19) /* Since CFE_EVS_MAX_PORT_MSG_LENGTH is the size of the buffer that is sent to * print out (using OS_printf), we need to check to make sure that the buffer - * size the OS uses is big enough. This check has to be made here because it is - * the first spot after CFE_EVS_MAX_PORT_MSG_LENGTH is defined */ -#if OS_BUFFER_SIZE < CFE_EVS_MAX_PORT_MSG_LENGTH -#error CFE_EVS_MAX_PORT_MSG_LENGTH cannot be greater than OS_BUFFER_SIZE! + * size the OS uses is big enough. The buffer needs to have at least 11 extra + * characters to accommodate the format string "EVS Port%u %s\n" used in + * downstream processing for sending messages via ports. This check has to be + * made here because it is the first spot after CFE_EVS_MAX_PORT_MSG_LENGTH + * is defined. */ +#if OS_BUFFER_SIZE < CFE_EVS_MAX_PORT_MSG_LENGTH + 11 +#error CFE_EVS_MAX_PORT_MSG_LENGTH cannot be greater than OS_BUFFER_SIZE - 11! #endif /************************ Internal Structure Definitions *****************************/