mirror of https://github.com/acidanthera/audk.git
IntelFrameworkModulePkg BdsLib: Fix potential memory leak when calling BdsLibGetVariableAndSize
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com> Reviewed-by: Eric Dong <eric.dong@intel.com> Reviewed-by: Ruiyu Ni<ruiyu.ni@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15732 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
e66e86ee2d
commit
46737a64d0
|
@ -3570,6 +3570,8 @@ BdsLibBootNext (
|
|||
ASSERT (BootOption != NULL);
|
||||
BdsLibConnectDevicePath (BootOption->DevicePath);
|
||||
BdsLibBootViaBootOption (BootOption, BootOption->DevicePath, &ExitDataSize, &ExitData);
|
||||
FreePool(BootOption);
|
||||
FreePool(BootNext);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue