]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdeModulePkg/HiiDatabaseDxe: Fix memory leak issues in HiiDatabaseDxe
authorDandan Bi <dandan.bi@intel.com>
Wed, 27 Apr 2016 10:00:02 +0000 (18:00 +0800)
committerStar Zeng <star.zeng@intel.com>
Fri, 6 May 2016 02:42:24 +0000 (10:42 +0800)
Cc: Qiu Shumin <shumin.qiu@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Dandan Bi <dandan.bi@intel.com>
Reviewed-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Qiu Shumin <shumin.qiu@intel.com>
MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c

index cc155ccc61c9780b8c8605101401406240f99a3c..a704734b309bd831e83e7d28189637c4401a0200 100644 (file)
@@ -549,6 +549,8 @@ FindSameBlockElement(
     ASSERT (TempBuffer != NULL);\r
     if ((BufferLen == Length) && (0 == CompareMem (Buffer, TempBuffer, Length))) {\r
       *Found = TRUE;\r
+      FreePool (TempBuffer);\r
+      TempBuffer = NULL;\r
       return EFI_SUCCESS;\r
     } else {\r
       FreePool (TempBuffer);\r
@@ -1887,6 +1889,9 @@ IsThisPackageList (
       if (IsThisVarstore((VOID *)&IfrVarStore->Guid, VarStoreName, ConfigHdr)) {\r
         FindVarstore = TRUE;\r
         goto Done;\r
+      } else {\r
+        FreePool (VarStoreName);\r
+        VarStoreName = NULL;\r
       }\r
       break;\r
 \r
@@ -1901,6 +1906,9 @@ IsThisPackageList (
       if (IsThisVarstore (&IfrEfiVarStore->Guid, VarStoreName, ConfigHdr)) {\r
         FindVarstore = TRUE;\r
         goto Done;\r
+      } else {\r
+        FreePool (VarStoreName);\r
+        VarStoreName = NULL;\r
       }\r
       break;\r
 \r
@@ -2094,6 +2102,7 @@ ParseIfrData (
   FirstOneOfOption = FALSE;\r
   VarStoreId       = 0;\r
   FirstOrderedList = FALSE;\r
+  VarStoreName     = NULL;\r
   ZeroMem (&DefaultData, sizeof (IFR_DEFAULT_DATA));\r
 \r
   //\r
@@ -2151,6 +2160,9 @@ ParseIfrData (
         VarStorageData->Name       = VarStoreName;\r
         VarStorageData->Type       = EFI_HII_VARSTORE_BUFFER;\r
         VarStoreId                 = IfrVarStore->VarStoreId;\r
+      } else {\r
+        FreePool (VarStoreName);\r
+        VarStoreName = NULL;\r
       }\r
       break;\r
 \r
@@ -2189,6 +2201,9 @@ ParseIfrData (
         VarStorageData->Name       = VarStoreName;\r
         VarStorageData->Type       = EFI_HII_VARSTORE_EFI_VARIABLE_BUFFER;\r
         VarStoreId                 = IfrEfiVarStore->VarStoreId;\r
+      } else {\r
+        FreePool (VarStoreName);\r
+        VarStoreName = NULL;\r
       }\r
       break;\r
 \r
@@ -3014,7 +3029,7 @@ GetBlockElement (
       if (EFI_ERROR (Status)) {\r
         goto Done;\r
       }\r
-\r
+      FreePool (TmpBuffer);\r
       StringPtr += Length;\r
       if (*StringPtr != 0 && *StringPtr != L'&') {\r
         goto Done;\r
@@ -3868,6 +3883,10 @@ Done:
       }\r
       FreePool (BlockData);\r
     }\r
+    if (VarStorageData ->Name != NULL) {\r
+      FreePool (VarStorageData ->Name);\r
+      VarStorageData ->Name = NULL;\r
+    }\r
     FreePool (VarStorageData);\r
   }\r
 \r