mirror of https://github.com/acidanthera/audk.git
BaseTools/VfrCompile: Avoid freeing memory with mismatched functions
Memory allocated by operator new[] should be freed using delete[] to avoid possible memory leak. Cc: Liming Gao <liming.gao@intel.com> Cc: Yonghong Zhu <yonghong.zhu@intel.com> Cc: Eric Dong <eric.dong@intel.com> Cc: Dandan Bi <dandan.bi@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
parent
a6ac965bca
commit
fd5425230e
|
@ -677,7 +677,7 @@ CVfrCompiler::PreProcess (
|
|||
goto Fail;
|
||||
}
|
||||
|
||||
delete PreProcessCmd;
|
||||
delete[] PreProcessCmd;
|
||||
|
||||
Out:
|
||||
SET_RUN_STATUS (STATUS_PREPROCESSED);
|
||||
|
@ -687,7 +687,7 @@ Fail:
|
|||
if (!IS_RUN_STATUS(STATUS_DEAD)) {
|
||||
SET_RUN_STATUS (STATUS_FAILED);
|
||||
}
|
||||
delete PreProcessCmd;
|
||||
delete[] PreProcessCmd;
|
||||
}
|
||||
|
||||
extern UINT8 VfrParserStart (IN FILE *, IN INPUT_INFO_TO_SYNTAX *);
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
VfrCompiler error handler.
|
||||
|
||||
Copyright (c) 2004 - 2013, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
|
@ -145,7 +145,7 @@ SVfrFileScopeRecord::~SVfrFileScopeRecord (
|
|||
)
|
||||
{
|
||||
if (mFileName != NULL) {
|
||||
delete mFileName;
|
||||
delete[] mFileName;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -56,13 +56,13 @@ SPendingAssign::~SPendingAssign (
|
|||
)
|
||||
{
|
||||
if (mKey != NULL) {
|
||||
delete mKey;
|
||||
delete[] mKey;
|
||||
}
|
||||
mAddr = NULL;
|
||||
mLen = 0;
|
||||
mLineNo = 0;
|
||||
if (mMsg != NULL) {
|
||||
delete mMsg;
|
||||
delete[] mMsg;
|
||||
}
|
||||
mNext = NULL;
|
||||
}
|
||||
|
@ -898,7 +898,7 @@ CFormPkg::DeclarePendingQuestion (
|
|||
strcpy (NewStr, SName);
|
||||
strcat (NewStr, VarStr + strlen (FName));
|
||||
ReturnCode = lCVfrVarDataTypeDB.GetDataFieldInfo (NewStr, Info.mInfo.mVarOffset, Info.mVarType, Info.mVarTotalSize);
|
||||
delete NewStr;
|
||||
delete[] NewStr;
|
||||
}
|
||||
} else {
|
||||
ReturnCode = VFR_RETURN_UNSUPPORTED;
|
||||
|
|
|
@ -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;
|
||||
|
@ -1393,7 +1393,7 @@ SVfrVarStorageNode::~SVfrVarStorageNode (
|
|||
)
|
||||
{
|
||||
if (mVarStoreName != NULL) {
|
||||
delete mVarStoreName;
|
||||
delete[] mVarStoreName;
|
||||
}
|
||||
|
||||
if (mVarStoreType == EFI_VFR_VARSTORE_NAME) {
|
||||
|
@ -2102,7 +2102,7 @@ SVfrDefaultStoreNode::~SVfrDefaultStoreNode (
|
|||
)
|
||||
{
|
||||
if (mRefName != NULL) {
|
||||
delete mRefName;
|
||||
delete[] mRefName;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2304,7 +2304,7 @@ SVfrRuleNode::~SVfrRuleNode (
|
|||
)
|
||||
{
|
||||
if (mRuleName != NULL) {
|
||||
delete mRuleName;
|
||||
delete[] mRuleName;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2523,11 +2523,11 @@ SVfrQuestionNode::~SVfrQuestionNode (
|
|||
)
|
||||
{
|
||||
if (mName != NULL) {
|
||||
delete mName;
|
||||
delete[] mName;
|
||||
}
|
||||
|
||||
if (mVarIdStr != NULL) {
|
||||
delete mVarIdStr;
|
||||
delete[] mVarIdStr;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3387,7 +3387,7 @@ CVfrStringDB::GetVarStoreNameFormStringId (
|
|||
// Check the String package.
|
||||
//
|
||||
if (PkgHeader->Header.Type != EFI_HII_PACKAGE_STRINGS) {
|
||||
delete StringPtr;
|
||||
delete[] StringPtr;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -3414,7 +3414,7 @@ CVfrStringDB::GetVarStoreNameFormStringId (
|
|||
//
|
||||
Status = FindStringBlock(Current, StringId, &NameOffset, &BlockType);
|
||||
if (Status != EFI_SUCCESS) {
|
||||
delete StringPtr;
|
||||
delete[] StringPtr;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -3447,7 +3447,7 @@ CVfrStringDB::GetVarStoreNameFormStringId (
|
|||
break;
|
||||
}
|
||||
|
||||
delete StringPtr;
|
||||
delete[] StringPtr;
|
||||
|
||||
return VarStoreName;
|
||||
}
|
||||
|
|
|
@ -33,6 +33,8 @@ extern BOOLEAN VfrCompatibleMode;
|
|||
#define EFI_BITS_PER_UINT32 (1 << EFI_BITS_SHIFT_PER_UINT32)
|
||||
|
||||
#define BUFFER_SAFE_FREE(Buf) do { if ((Buf) != NULL) { delete (Buf); } } while (0);
|
||||
#define ARRAY_SAFE_FREE(Buf) do { if ((Buf) != NULL) { delete[] (Buf); } } while (0);
|
||||
|
||||
|
||||
class CVfrBinaryOutput {
|
||||
public:
|
||||
|
@ -139,7 +141,7 @@ struct SVfrPackStackNode {
|
|||
|
||||
~SVfrPackStackNode (VOID) {
|
||||
if (mIdentifier != NULL) {
|
||||
delete mIdentifier;
|
||||
delete[] mIdentifier;
|
||||
}
|
||||
mNext = NULL;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue