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);
|
ASSERT (BootOption != NULL);
|
||||||
BdsLibConnectDevicePath (BootOption->DevicePath);
|
BdsLibConnectDevicePath (BootOption->DevicePath);
|
||||||
BdsLibBootViaBootOption (BootOption, BootOption->DevicePath, &ExitDataSize, &ExitData);
|
BdsLibBootViaBootOption (BootOption, BootOption->DevicePath, &ExitDataSize, &ExitData);
|
||||||
|
FreePool(BootOption);
|
||||||
|
FreePool(BootNext);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -168,6 +168,7 @@ BdsLibGetFreeOptionNumber (
|
||||||
if (OptionBuffer == NULL) {
|
if (OptionBuffer == NULL) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
FreePool(OptionBuffer);
|
||||||
Index++;
|
Index++;
|
||||||
} while (TRUE);
|
} while (TRUE);
|
||||||
|
|
||||||
|
@ -265,6 +266,7 @@ BdsLibRegisterNewOption (
|
||||||
// Validate the variable.
|
// Validate the variable.
|
||||||
//
|
//
|
||||||
if (!ValidateOption(OptionPtr, OptionSize)) {
|
if (!ValidateOption(OptionPtr, OptionSize)) {
|
||||||
|
FreePool(OptionPtr);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -626,6 +628,7 @@ BdsLibVariableToOption (
|
||||||
// Validate Boot#### variable data.
|
// Validate Boot#### variable data.
|
||||||
//
|
//
|
||||||
if (!ValidateOption(Variable, VariableSize)) {
|
if (!ValidateOption(Variable, VariableSize)) {
|
||||||
|
FreePool (Variable);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -674,6 +677,7 @@ BdsLibVariableToOption (
|
||||||
//
|
//
|
||||||
Option = AllocateZeroPool (sizeof (BDS_COMMON_OPTION));
|
Option = AllocateZeroPool (sizeof (BDS_COMMON_OPTION));
|
||||||
if (Option == NULL) {
|
if (Option == NULL) {
|
||||||
|
FreePool (Variable);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue