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

Reply via email to