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;
|
goto Fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
delete PreProcessCmd;
|
delete[] PreProcessCmd;
|
||||||
|
|
||||||
Out:
|
Out:
|
||||||
SET_RUN_STATUS (STATUS_PREPROCESSED);
|
SET_RUN_STATUS (STATUS_PREPROCESSED);
|
||||||
|
@ -687,7 +687,7 @@ Fail:
|
||||||
if (!IS_RUN_STATUS(STATUS_DEAD)) {
|
if (!IS_RUN_STATUS(STATUS_DEAD)) {
|
||||||
SET_RUN_STATUS (STATUS_FAILED);
|
SET_RUN_STATUS (STATUS_FAILED);
|
||||||
}
|
}
|
||||||
delete PreProcessCmd;
|
delete[] PreProcessCmd;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern UINT8 VfrParserStart (IN FILE *, IN INPUT_INFO_TO_SYNTAX *);
|
extern UINT8 VfrParserStart (IN FILE *, IN INPUT_INFO_TO_SYNTAX *);
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
VfrCompiler error handler.
|
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
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
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
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
|
@ -145,7 +145,7 @@ SVfrFileScopeRecord::~SVfrFileScopeRecord (
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if (mFileName != NULL) {
|
if (mFileName != NULL) {
|
||||||
delete mFileName;
|
delete[] mFileName;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -56,13 +56,13 @@ SPendingAssign::~SPendingAssign (
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if (mKey != NULL) {
|
if (mKey != NULL) {
|
||||||
delete mKey;
|
delete[] mKey;
|
||||||
}
|
}
|
||||||
mAddr = NULL;
|
mAddr = NULL;
|
||||||
mLen = 0;
|
mLen = 0;
|
||||||
mLineNo = 0;
|
mLineNo = 0;
|
||||||
if (mMsg != NULL) {
|
if (mMsg != NULL) {
|
||||||
delete mMsg;
|
delete[] mMsg;
|
||||||
}
|
}
|
||||||
mNext = NULL;
|
mNext = NULL;
|
||||||
}
|
}
|
||||||
|
@ -898,7 +898,7 @@ CFormPkg::DeclarePendingQuestion (
|
||||||
strcpy (NewStr, SName);
|
strcpy (NewStr, SName);
|
||||||
strcat (NewStr, VarStr + strlen (FName));
|
strcat (NewStr, VarStr + strlen (FName));
|
||||||
ReturnCode = lCVfrVarDataTypeDB.GetDataFieldInfo (NewStr, Info.mInfo.mVarOffset, Info.mVarType, Info.mVarTotalSize);
|
ReturnCode = lCVfrVarDataTypeDB.GetDataFieldInfo (NewStr, Info.mInfo.mVarOffset, Info.mVarType, Info.mVarTotalSize);
|
||||||
delete NewStr;
|
delete[] NewStr;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ReturnCode = VFR_RETURN_UNSUPPORTED;
|
ReturnCode = VFR_RETURN_UNSUPPORTED;
|
||||||
|
|
|
@ -123,7 +123,7 @@ SConfigInfo::~SConfigInfo (
|
||||||
VOID
|
VOID
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
BUFFER_SAFE_FREE (mValue);
|
ARRAY_SAFE_FREE (mValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
SConfigItem::SConfigItem (
|
SConfigItem::SConfigItem (
|
||||||
|
@ -200,9 +200,9 @@ SConfigItem::~SConfigItem (
|
||||||
{
|
{
|
||||||
SConfigInfo *Info;
|
SConfigInfo *Info;
|
||||||
|
|
||||||
BUFFER_SAFE_FREE (mName);
|
ARRAY_SAFE_FREE (mName);
|
||||||
BUFFER_SAFE_FREE (mGuid);
|
ARRAY_SAFE_FREE (mGuid);
|
||||||
BUFFER_SAFE_FREE (mId);
|
ARRAY_SAFE_FREE (mId);
|
||||||
while (mInfoStrList != NULL) {
|
while (mInfoStrList != NULL) {
|
||||||
Info = mInfoStrList;
|
Info = mInfoStrList;
|
||||||
mInfoStrList = mInfoStrList->mNext;
|
mInfoStrList = mInfoStrList->mNext;
|
||||||
|
@ -1393,7 +1393,7 @@ SVfrVarStorageNode::~SVfrVarStorageNode (
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if (mVarStoreName != NULL) {
|
if (mVarStoreName != NULL) {
|
||||||
delete mVarStoreName;
|
delete[] mVarStoreName;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mVarStoreType == EFI_VFR_VARSTORE_NAME) {
|
if (mVarStoreType == EFI_VFR_VARSTORE_NAME) {
|
||||||
|
@ -2102,7 +2102,7 @@ SVfrDefaultStoreNode::~SVfrDefaultStoreNode (
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if (mRefName != NULL) {
|
if (mRefName != NULL) {
|
||||||
delete mRefName;
|
delete[] mRefName;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2304,7 +2304,7 @@ SVfrRuleNode::~SVfrRuleNode (
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if (mRuleName != NULL) {
|
if (mRuleName != NULL) {
|
||||||
delete mRuleName;
|
delete[] mRuleName;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2523,11 +2523,11 @@ SVfrQuestionNode::~SVfrQuestionNode (
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if (mName != NULL) {
|
if (mName != NULL) {
|
||||||
delete mName;
|
delete[] mName;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mVarIdStr != NULL) {
|
if (mVarIdStr != NULL) {
|
||||||
delete mVarIdStr;
|
delete[] mVarIdStr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3387,7 +3387,7 @@ CVfrStringDB::GetVarStoreNameFormStringId (
|
||||||
// Check the String package.
|
// Check the String package.
|
||||||
//
|
//
|
||||||
if (PkgHeader->Header.Type != EFI_HII_PACKAGE_STRINGS) {
|
if (PkgHeader->Header.Type != EFI_HII_PACKAGE_STRINGS) {
|
||||||
delete StringPtr;
|
delete[] StringPtr;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3414,7 +3414,7 @@ CVfrStringDB::GetVarStoreNameFormStringId (
|
||||||
//
|
//
|
||||||
Status = FindStringBlock(Current, StringId, &NameOffset, &BlockType);
|
Status = FindStringBlock(Current, StringId, &NameOffset, &BlockType);
|
||||||
if (Status != EFI_SUCCESS) {
|
if (Status != EFI_SUCCESS) {
|
||||||
delete StringPtr;
|
delete[] StringPtr;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3447,7 +3447,7 @@ CVfrStringDB::GetVarStoreNameFormStringId (
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
delete StringPtr;
|
delete[] StringPtr;
|
||||||
|
|
||||||
return VarStoreName;
|
return VarStoreName;
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,6 +33,8 @@ extern BOOLEAN VfrCompatibleMode;
|
||||||
#define EFI_BITS_PER_UINT32 (1 << EFI_BITS_SHIFT_PER_UINT32)
|
#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 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 {
|
class CVfrBinaryOutput {
|
||||||
public:
|
public:
|
||||||
|
@ -139,7 +141,7 @@ struct SVfrPackStackNode {
|
||||||
|
|
||||||
~SVfrPackStackNode (VOID) {
|
~SVfrPackStackNode (VOID) {
|
||||||
if (mIdentifier != NULL) {
|
if (mIdentifier != NULL) {
|
||||||
delete mIdentifier;
|
delete[] mIdentifier;
|
||||||
}
|
}
|
||||||
mNext = NULL;
|
mNext = NULL;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue