diff --git a/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c b/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c index 8451d3434a..8acdad8f53 100644 --- a/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c +++ b/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c @@ -3570,6 +3570,8 @@ BdsLibBootNext ( ASSERT (BootOption != NULL); BdsLibConnectDevicePath (BootOption->DevicePath); BdsLibBootViaBootOption (BootOption, BootOption->DevicePath, &ExitDataSize, &ExitData); + FreePool(BootOption); + FreePool(BootNext); } } diff --git a/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsMisc.c b/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsMisc.c index 7b3f2050ae..dbb132226f 100644 --- a/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsMisc.c +++ b/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsMisc.c @@ -168,6 +168,7 @@ BdsLibGetFreeOptionNumber ( if (OptionBuffer == NULL) { break; } + FreePool(OptionBuffer); Index++; } while (TRUE); @@ -265,6 +266,7 @@ BdsLibRegisterNewOption ( // Validate the variable. // if (!ValidateOption(OptionPtr, OptionSize)) { + FreePool(OptionPtr); continue; } @@ -626,6 +628,7 @@ BdsLibVariableToOption ( // Validate Boot#### variable data. // if (!ValidateOption(Variable, VariableSize)) { + FreePool (Variable); return NULL; } @@ -674,6 +677,7 @@ BdsLibVariableToOption ( // Option = AllocateZeroPool (sizeof (BDS_COMMON_OPTION)); if (Option == NULL) { + FreePool (Variable); return NULL; }