Cc: Qiu Shumin <[email protected]>
Cc: Eric Dong <[email protected]>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Dandan Bi <[email protected]>
Reviewed-by: Eric Dong <[email protected]>
---
.../Universal/HiiDatabaseDxe/ConfigRouting.c | 21 ++++++++++++++++++++-
1 file changed, 20 insertions(+), 1 deletion(-)
diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c
b/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c
index cc155cc..a704734 100644
--- a/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c
+++ b/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c
@@ -547,10 +547,12 @@ FindSameBlockElement(
return Status;
}
ASSERT (TempBuffer != NULL);
if ((BufferLen == Length) && (0 == CompareMem (Buffer, TempBuffer,
Length))) {
*Found = TRUE;
+ FreePool (TempBuffer);
+ TempBuffer = NULL;
return EFI_SUCCESS;
} else {
FreePool (TempBuffer);
TempBuffer = NULL;
BlockPtr = StrStr (BlockPtr + 1, BlockName);
@@ -1885,10 +1887,13 @@ IsThisPackageList (
AsciiStrToUnicodeStr ((CHAR8 *)IfrVarStore->Name, VarStoreName);
if (IsThisVarstore((VOID *)&IfrVarStore->Guid, VarStoreName, ConfigHdr))
{
FindVarstore = TRUE;
goto Done;
+ } else {
+ FreePool (VarStoreName);
+ VarStoreName = NULL;
}
break;
case EFI_IFR_VARSTORE_EFI_OP:
IfrEfiVarStore = (EFI_IFR_VARSTORE_EFI *) IfrOpHdr;
@@ -1899,10 +1904,13 @@ IsThisPackageList (
AsciiStrToUnicodeStr ((CHAR8 *)IfrEfiVarStore->Name, VarStoreName);
if (IsThisVarstore (&IfrEfiVarStore->Guid, VarStoreName, ConfigHdr)) {
FindVarstore = TRUE;
goto Done;
+ } else {
+ FreePool (VarStoreName);
+ VarStoreName = NULL;
}
break;
case EFI_IFR_VARSTORE_NAME_VALUE_OP:
IfrNameValueVarStore = (EFI_IFR_VARSTORE_NAME_VALUE *) IfrOpHdr;
@@ -2092,10 +2100,11 @@ ParseIfrData (
BlockData = NULL;
DefaultDataPtr = NULL;
FirstOneOfOption = FALSE;
VarStoreId = 0;
FirstOrderedList = FALSE;
+ VarStoreName = NULL;
ZeroMem (&DefaultData, sizeof (IFR_DEFAULT_DATA));
//
// Go through the form package to parse OpCode one by one.
//
@@ -2149,10 +2158,13 @@ ParseIfrData (
CopyGuid (&VarStorageData->Guid, (EFI_GUID *) (VOID *)
&IfrVarStore->Guid);
VarStorageData->Size = IfrVarStore->Size;
VarStorageData->Name = VarStoreName;
VarStorageData->Type = EFI_HII_VARSTORE_BUFFER;
VarStoreId = IfrVarStore->VarStoreId;
+ } else {
+ FreePool (VarStoreName);
+ VarStoreName = NULL;
}
break;
case EFI_IFR_VARSTORE_EFI_OP:
//
@@ -2187,10 +2199,13 @@ ParseIfrData (
CopyGuid (&VarStorageData->Guid, (EFI_GUID *) (VOID *)
&IfrEfiVarStore->Guid);
VarStorageData->Size = IfrEfiVarStore->Size;
VarStorageData->Name = VarStoreName;
VarStorageData->Type = EFI_HII_VARSTORE_EFI_VARIABLE_BUFFER;
VarStoreId = IfrEfiVarStore->VarStoreId;
+ } else {
+ FreePool (VarStoreName);
+ VarStoreName = NULL;
}
break;
case EFI_IFR_VARSTORE_NAME_VALUE_OP:
//
@@ -3012,11 +3027,11 @@ GetBlockElement (
//
Status = GetValueOfNumber (StringPtr, &TmpBuffer, &Length);
if (EFI_ERROR (Status)) {
goto Done;
}
-
+ FreePool (TmpBuffer);
StringPtr += Length;
if (*StringPtr != 0 && *StringPtr != L'&') {
goto Done;
}
}
@@ -3866,10 +3881,14 @@ Done:
RemoveEntryList (&DefaultValueData->Entry);
FreePool (DefaultValueData);
}
FreePool (BlockData);
}
+ if (VarStorageData ->Name != NULL) {
+ FreePool (VarStorageData ->Name);
+ VarStorageData ->Name = NULL;
+ }
FreePool (VarStorageData);
}
if (DefaultIdArray != NULL) {
//
--
1.9.5.msysgit.1
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel