From 69cd57bcd1624f420b395564b77581de7e6e076b Mon Sep 17 00:00:00 2001 From: Chris Knight Date: Thu, 7 May 2020 12:22:49 -0700 Subject: [PATCH] fix #687 - validate table handle prior to use --- fsw/cfe-core/src/tbl/cfe_tbl_api.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/fsw/cfe-core/src/tbl/cfe_tbl_api.c b/fsw/cfe-core/src/tbl/cfe_tbl_api.c index 29709871e..1ac2ae191 100644 --- a/fsw/cfe-core/src/tbl/cfe_tbl_api.c +++ b/fsw/cfe-core/src/tbl/cfe_tbl_api.c @@ -678,21 +678,13 @@ int32 CFE_TBL_Load( CFE_TBL_Handle_t TblHandle, int32 Status; uint32 ThisAppId; CFE_TBL_LoadBuff_t *WorkingBufferPtr; - CFE_TBL_AccessDescriptor_t *AccessDescPtr = &CFE_TBL_TaskData.Handles[TblHandle]; - CFE_TBL_RegistryRec_t *RegRecPtr = &CFE_TBL_TaskData.Registry[AccessDescPtr->RegIndex]; - char AppName[OS_MAX_API_NAME]={"UNKNOWN"}; + CFE_TBL_AccessDescriptor_t *AccessDescPtr; + CFE_TBL_RegistryRec_t *RegRecPtr; + char AppName[OS_MAX_API_NAME] = {"UNKNOWN"}; bool FirstTime = false; /* Verify access rights and get a valid Application ID for calling App */ - Status = CFE_TBL_ValidateAccess(TblHandle, &ThisAppId); - - /* Translate AppID of caller into App Name */ - CFE_ES_GetAppName(AppName, ThisAppId, OS_MAX_API_NAME); - - /* Initialize return pointer to NULL */ - WorkingBufferPtr = NULL; - - if (Status != CFE_SUCCESS) + if ((Status = CFE_TBL_ValidateAccess(TblHandle, &ThisAppId)) != CFE_SUCCESS) { CFE_EVS_SendEventWithAppID(CFE_TBL_HANDLE_ACCESS_ERR_EID, CFE_EVS_EventType_ERROR, CFE_TBL_TaskData.TableTaskAppId, @@ -701,6 +693,15 @@ int32 CFE_TBL_Load( CFE_TBL_Handle_t TblHandle, return Status; } + AccessDescPtr = &CFE_TBL_TaskData.Handles[TblHandle]; + RegRecPtr = &CFE_TBL_TaskData.Registry[AccessDescPtr->RegIndex]; + + /* Translate AppID of caller into App Name */ + CFE_ES_GetAppName(AppName, ThisAppId, OS_MAX_API_NAME); + + /* Initialize return pointer to NULL */ + WorkingBufferPtr = NULL; + /* Check to see if this is a dump only table */ if (RegRecPtr->DumpOnly) {