]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkPkg/Library/FrameworkIfrSupportLib/IfrCommon.c
Fix FreePoll() bugs in some places.
[mirror_edk2.git] / IntelFrameworkPkg / Library / FrameworkIfrSupportLib / IfrCommon.c
index 6ec7dc88387edd9c31772fd054f0966a60022cd4..9bc82f16b7b47038a0280c90de0289fda176eb97 100644 (file)
@@ -804,6 +804,7 @@ ValidateDataFromHiiHandle (
   //\r
   VariableData = AllocateZeroPool (SizeOfNvStore);\r
   if (VariableData == NULL) {\r
+    FreePool (OldData);\r
     return EFI_OUT_OF_RESOURCES;\r
   }\r
 \r
@@ -832,6 +833,7 @@ ValidateDataFromHiiHandle (
 \r
       VariableData = AllocatePool (SizeOfNvStore);\r
       if (VariableData == NULL) {\r
+        FreePool (OldData);\r
         return EFI_OUT_OF_RESOURCES;\r
       }\r
 \r
@@ -875,7 +877,7 @@ ValidateDataFromHiiHandle (
       //\r
       if (!GotMatch) {\r
         *Results = FALSE;\r
-        return EFI_SUCCESS;\r
+        goto EXIT;\r
       }\r
       break;\r
 \r
@@ -886,7 +888,7 @@ ValidateDataFromHiiHandle (
       //\r
       if (VariableData[((FRAMEWORK_EFI_IFR_CHECKBOX *) &RawData[Index])->QuestionId] > 1) {\r
         *Results = FALSE;\r
-        return EFI_SUCCESS;\r
+        goto EXIT;\r
       }\r
       break;\r
 \r
@@ -894,7 +896,7 @@ ValidateDataFromHiiHandle (
         if ((VariableData[((FRAMEWORK_EFI_IFR_NUMERIC *)&RawData[Index])->QuestionId] < ((FRAMEWORK_EFI_IFR_NUMERIC *)&RawData[Index])->Minimum) ||\r
             (VariableData[((FRAMEWORK_EFI_IFR_NUMERIC *)&RawData[Index])->QuestionId] > ((FRAMEWORK_EFI_IFR_NUMERIC *)&RawData[Index])->Maximum)) {\r
         *Results = FALSE;\r
-        return EFI_SUCCESS;\r
+        goto EXIT;\r
       }\r
       break;\r
 \r
@@ -903,11 +905,12 @@ ValidateDataFromHiiHandle (
     Index = RawData[Index + 1] + Index;\r
   }\r
 \r
+EXIT: \r
   //\r
   // Free our temporary repository of form data\r
   //\r
-  gBS->FreePool (OldData);\r
-  gBS->FreePool (VariableData);\r
+  FreePool (OldData);\r
+  FreePool (VariableData);\r
 \r
   return EFI_SUCCESS;\r
 }\r