From: Chen Fan Date: Fri, 1 Aug 2014 02:45:45 +0000 (+0000) Subject: IntelFrameworkModulePkg BdsLib: Fix potential memory leak when calling BdsLibGetVaria... X-Git-Tag: edk2-stable201903~11262 X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=commitdiff_plain;h=46737a64d0e8f5dcc525973d3313f95920155265 IntelFrameworkModulePkg BdsLib: Fix potential memory leak when calling BdsLibGetVariableAndSize Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Chen Fan Reviewed-by: Eric Dong Reviewed-by: Ruiyu Ni git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15732 6f19259b-4bc3-4df7-8a09-765794883524 --- 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; }