\r
#include "stdio.h"\r
#include "stdlib.h"\r
+#include "assert.h"\r
#include "CommonLib.h"\r
#include "VfrUtilityLib.h"\r
#include "VfrFormPkg.h"\r
SVfrDataField *pTmp;\r
\r
GetDataType (TypeName, &pType);\r
+\r
+ if (pType == NULL){\r
+ return FALSE;\r
+ }\r
for (pTmp = pType->mMembers; pTmp!= NULL; pTmp = pTmp->mNext) {\r
if (pTmp->mIsBitField) {\r
- return TRUE;\r
+ return TRUE;\r
}\r
}\r
return FALSE;\r
CHECK_ERROR_RETURN(GetTypeField (FName, pType, pField), VFR_RETURN_SUCCESS);\r
pType = pField->mFieldType;\r
}\r
- if (pField->mIsBitField) {\r
+ if (pField != NULL && pField->mIsBitField) {\r
return TRUE;\r
} else {\r
return FALSE;\r
for (Index = 0; gInternalTypesTable[Index].mTypeName != NULL; Index++) {\r
New = new SVfrDataType;\r
if (New != NULL) {\r
- strcpy (New->mTypeName, gInternalTypesTable[Index].mTypeName);\r
+ assert (strlen (gInternalTypesTable[Index].mTypeName) < MAX_NAME_LEN);\r
+ strncpy (New->mTypeName, gInternalTypesTable[Index].mTypeName, MAX_NAME_LEN - 1);\r
+ New->mTypeName[MAX_NAME_LEN - 1] = 0;\r
New->mType = gInternalTypesTable[Index].mType;\r
New->mAlign = gInternalTypesTable[Index].mAlign;\r
New->mTotalSize = gInternalTypesTable[Index].mSize;\r
mPackAlign = DEFAULT_PACK_ALIGN;\r
mPackStack = NULL;\r
mFirstNewDataTypeName = NULL;\r
+ mCurrDataType = NULL;\r
\r
InternalTypesListInit ();\r
}\r
}\r
}\r
\r
- strcpy(mNewDataType->mTypeName, TypeName);\r
+ strncpy(mNewDataType->mTypeName, TypeName, MAX_NAME_LEN - 1);\r
+ mNewDataType->mTypeName[MAX_NAME_LEN - 1] = 0;\r
return VFR_RETURN_SUCCESS;\r
}\r
\r
\r
MaxDataTypeSize = mNewDataType->mTotalSize;\r
if (FieldName != NULL) {\r
- strcpy (pNewField->mFieldName, FieldName);\r
+ strncpy (pNewField->mFieldName, FieldName, MAX_NAME_LEN - 1);\r
+ pNewField->mFieldName[MAX_NAME_LEN - 1] = 0;\r
}\r
pNewField->mFieldType = pFieldType;\r
pNewField->mIsBitField = TRUE;\r
if ((pNewField = new SVfrDataField) == NULL) {\r
return VFR_RETURN_OUT_FOR_RESOURCES;\r
}\r
- strcpy (pNewField->mFieldName, FieldName);\r
+ strncpy (pNewField->mFieldName, FieldName, MAX_NAME_LEN - 1);\r
+ pNewField->mFieldName[MAX_NAME_LEN - 1] = 0;\r
pNewField->mFieldType = pFieldType;\r
pNewField->mArrayNum = ArrayNum;\r
pNewField->mIsBitField = FALSE;\r
IN EFI_VARSTORE_ID VarStoreId\r
)\r
{\r
+ memset (&mGuid, 0, sizeof (EFI_GUID));\r
if (StoreName != NULL) {\r
mVarStoreName = new CHAR8[strlen(StoreName) + 1];\r
strcpy (mVarStoreName, StoreName);\r
mVarStoreType = EFI_VFR_VARSTORE_NAME;\r
mStorageInfo.mNameSpace.mNameTable = new EFI_VARSTORE_ID[DEFAULT_NAME_TABLE_ITEMS];\r
mStorageInfo.mNameSpace.mTableSize = 0;\r
+ mAssignedFlag = FALSE;\r
}\r
\r
SVfrVarStorageNode::~SVfrVarStorageNode (\r