From d21d94aeeda357fe243bfd8f149b76c4a948ebca Mon Sep 17 00:00:00 2001 From: Joseph Hickey Date: Tue, 27 Oct 2020 11:40:53 -0400 Subject: [PATCH] Fix #966, update padding in CDS registry record As the name field is a multiple of 4 bytes, there needs to be 3 bytes of padding, not 1, to avoid implicit padding. This doesn't change anything, it just makes the padding explicit instead of implicit. --- fsw/cfe-core/src/es/cfe_es_task.c | 5 +---- fsw/cfe-core/src/inc/cfe_es_msg.h | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/fsw/cfe-core/src/es/cfe_es_task.c b/fsw/cfe-core/src/es/cfe_es_task.c index 65bc828b6..d1fabc6cc 100644 --- a/fsw/cfe-core/src/es/cfe_es_task.c +++ b/fsw/cfe-core/src/es/cfe_es_task.c @@ -1827,14 +1827,11 @@ int32 CFE_ES_DumpCDSRegistryCmd(const CFE_ES_DumpCDSRegistry_t *data) if ( CFE_ES_CDSBlockRecordIsUsed(RegRecPtr) ) { /* Fill CDS Registry Dump Record with relevant information */ + memset(&DumpRecord, 0, sizeof(DumpRecord)); DumpRecord.Size = CFE_ES_CDSBlockRecordGetUserSize(RegRecPtr); DumpRecord.Handle = CFE_ES_CDSBlockRecordGetID(RegRecPtr); DumpRecord.Table = RegRecPtr->Table; - DumpRecord.ByteAlignSpare1 = 0; - - /* strncpy will zero out any unused buffer - memset not necessary */ strncpy(DumpRecord.Name, RegRecPtr->Name, sizeof(DumpRecord.Name)-1); - DumpRecord.Name[sizeof(DumpRecord.Name)-1] = 0; /* Output Registry Dump Record to Registry Dump File */ Status = OS_write(FileDescriptor, diff --git a/fsw/cfe-core/src/inc/cfe_es_msg.h b/fsw/cfe-core/src/inc/cfe_es_msg.h index cb17775b7..602bc058f 100644 --- a/fsw/cfe-core/src/inc/cfe_es_msg.h +++ b/fsw/cfe-core/src/inc/cfe_es_msg.h @@ -1478,7 +1478,7 @@ typedef struct CFE_ES_CDSRegDumpRec CFE_ES_CDS_Offset_t Size; /**< \brief Size, in bytes, of the CDS memory block */ bool Table; /**< \brief Flag that indicates whether CDS contains a Critical Table */ char Name[CFE_MISSION_ES_CDS_MAX_NAME_LEN]; /**< \brief Processor Unique Name of CDS */ - uint8 ByteAlignSpare1; /**< \brief Spare byte to insure structure size is multiple of 4 bytes */ + uint8 ByteAlignSpare[3]; /**< \brief Spare bytes to ensure structure size is multiple of 4 bytes */ } CFE_ES_CDSRegDumpRec_t; /**