X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=BaseTools%2FSource%2FC%2FVfrCompile%2FVfrUtilityLib.cpp;h=3ca57ed74184c41645cd1c7a60c5ab2e1a2ac4eb;hb=8230d45bba517d78c20634425587efeb6fa14d7c;hp=d2cb5cc9ded702813f9b086cd0a398a9e813b066;hpb=9b78c54a09280ca852130b3ef76272a5d31d5035;p=mirror_edk2.git diff --git a/BaseTools/Source/C/VfrCompile/VfrUtilityLib.cpp b/BaseTools/Source/C/VfrCompile/VfrUtilityLib.cpp index d2cb5cc9de..3ca57ed741 100644 --- a/BaseTools/Source/C/VfrCompile/VfrUtilityLib.cpp +++ b/BaseTools/Source/C/VfrCompile/VfrUtilityLib.cpp @@ -123,7 +123,7 @@ SConfigInfo::~SConfigInfo ( VOID ) { - BUFFER_SAFE_FREE (mValue); + ARRAY_SAFE_FREE (mValue); } SConfigItem::SConfigItem ( @@ -200,9 +200,9 @@ SConfigItem::~SConfigItem ( { SConfigInfo *Info; - BUFFER_SAFE_FREE (mName); - BUFFER_SAFE_FREE (mGuid); - BUFFER_SAFE_FREE (mId); + ARRAY_SAFE_FREE (mName); + ARRAY_SAFE_FREE (mGuid); + ARRAY_SAFE_FREE (mId); while (mInfoStrList != NULL) { Info = mInfoStrList; mInfoStrList = mInfoStrList->mNext; @@ -1328,7 +1328,7 @@ SVfrVarStorageNode::SVfrVarStorageNode ( if (Guid != NULL) { mGuid = *Guid; } else { - memset (&Guid, 0, sizeof (EFI_GUID)); + memset (&mGuid, 0, sizeof (EFI_GUID)); } if (StoreName != NULL) { mVarStoreName = new CHAR8[strlen(StoreName) + 1]; @@ -1355,7 +1355,7 @@ SVfrVarStorageNode::SVfrVarStorageNode ( if (Guid != NULL) { mGuid = *Guid; } else { - memset (&Guid, 0, sizeof (EFI_GUID)); + memset (&mGuid, 0, sizeof (EFI_GUID)); } if (StoreName != NULL) { mVarStoreName = new CHAR8[strlen(StoreName) + 1]; @@ -1393,7 +1393,7 @@ SVfrVarStorageNode::~SVfrVarStorageNode ( ) { if (mVarStoreName != NULL) { - delete mVarStoreName; + delete[] mVarStoreName; } if (mVarStoreType == EFI_VFR_VARSTORE_NAME) { @@ -1474,6 +1474,10 @@ CVfrDataStorage::GetFreeVarStoreId ( } } + if (Index == EFI_FREE_VARSTORE_ID_BITMAP_SIZE) { + return EFI_VARSTORE_ID_INVALID; + } + for (Offset = 0, Mask = 0x80000000; Mask != 0; Mask >>= 1, Offset++) { if ((mFreeVarStoreIdBitMap[Index] & Mask) == 0) { mFreeVarStoreIdBitMap[Index] |= Mask; @@ -2098,7 +2102,7 @@ SVfrDefaultStoreNode::~SVfrDefaultStoreNode ( ) { if (mRefName != NULL) { - delete mRefName; + delete[] mRefName; } } @@ -2300,7 +2304,7 @@ SVfrRuleNode::~SVfrRuleNode ( ) { if (mRuleName != NULL) { - delete mRuleName; + delete[] mRuleName; } } @@ -2386,6 +2390,22 @@ EFI_VARSTORE_INFO::EFI_VARSTORE_INFO ( mVarTotalSize = Info.mVarTotalSize; } +EFI_VARSTORE_INFO& +EFI_VARSTORE_INFO::operator= ( + IN CONST EFI_VARSTORE_INFO &Info + ) +{ + if (this != &Info) { + mVarStoreId = Info.mVarStoreId; + mInfo.mVarName = Info.mInfo.mVarName; + mInfo.mVarOffset = Info.mInfo.mVarOffset; + mVarType = Info.mVarType; + mVarTotalSize = Info.mVarTotalSize; + } + + return *this; +} + BOOLEAN EFI_VARSTORE_INFO::operator == ( IN EFI_VARSTORE_INFO *Info @@ -2437,6 +2457,10 @@ CVfrQuestionDB::GetFreeQuestionId ( } } + if (Index == EFI_FREE_QUESTION_ID_BITMAP_SIZE) { + return EFI_QUESTION_ID_INVALID; + } + for (Offset = 0, Mask = 0x80000000; Mask != 0; Mask >>= 1, Offset++) { if ((mFreeQIdBitMap[Index] & Mask) == 0) { mFreeQIdBitMap[Index] |= Mask; @@ -2515,11 +2539,11 @@ SVfrQuestionNode::~SVfrQuestionNode ( ) { if (mName != NULL) { - delete mName; + delete[] mName; } if (mVarIdStr != NULL) { - delete mVarIdStr; + delete[] mVarIdStr; } } @@ -3379,7 +3403,7 @@ CVfrStringDB::GetVarStoreNameFormStringId ( // Check the String package. // if (PkgHeader->Header.Type != EFI_HII_PACKAGE_STRINGS) { - delete StringPtr; + delete[] StringPtr; return NULL; } @@ -3406,7 +3430,7 @@ CVfrStringDB::GetVarStoreNameFormStringId ( // Status = FindStringBlock(Current, StringId, &NameOffset, &BlockType); if (Status != EFI_SUCCESS) { - delete StringPtr; + delete[] StringPtr; return NULL; } @@ -3439,7 +3463,7 @@ CVfrStringDB::GetVarStoreNameFormStringId ( break; } - delete StringPtr; + delete[] StringPtr; return VarStoreName; }