diff options
author | Gao, Zhichao <zhichao.gao@intel.com> | 2019-06-25 11:22:49 +0800 |
---|---|---|
committer | Hao A Wu <hao.a.wu@intel.com> | 2019-06-26 16:08:48 +0800 |
commit | 846b1652d99a60d91805648d7e395f084e097465 (patch) | |
tree | 59447b0d892f5c1d2be68251909bede913631483 | |
parent | c1227348e3722be4862fea03e01ed9ee8a01d081 (diff) | |
download | edk2-846b1652d99a60d91805648d7e395f084e097465.tar.gz edk2-846b1652d99a60d91805648d7e395f084e097465.tar.bz2 edk2-846b1652d99a60d91805648d7e395f084e097465.zip |
MdeModulePkg/CapsulePei: Add memory pointer check
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1935
Before use the memory that is allocated through AllocateZeroPool,
we should check the memory pointer is valid to avoid using the
NULL pointer.
Add check for VariableArrayAddress that is returned from
GetScatterGatherHeadEntries. If it is NULL, directly return
the error status.
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Hao A Wu <hao.a.wu@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Signed-off-by: Zhichao Gao <zhichao.gao@intel.com>
Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
-rw-r--r-- | MdeModulePkg/Universal/CapsulePei/UefiCapsule.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/MdeModulePkg/Universal/CapsulePei/UefiCapsule.c b/MdeModulePkg/Universal/CapsulePei/UefiCapsule.c index 8d4ae69bb2..51afab7b05 100644 --- a/MdeModulePkg/Universal/CapsulePei/UefiCapsule.c +++ b/MdeModulePkg/Universal/CapsulePei/UefiCapsule.c @@ -965,6 +965,10 @@ GetScatterGatherHeadEntries ( //
if ((ValidIndex + 1) >= TempListLength) {
EnlargedTempList = AllocateZeroPool (TempListLength * 2);
+ if (EnlargedTempList == NULL) {
+ DEBUG ((DEBUG_ERROR, "Fail to allocate memory!\n"));
+ return EFI_OUT_OF_RESOURCES;
+ }
CopyMem (EnlargedTempList, TempList, TempListLength);
FreePool (TempList);
TempList = EnlargedTempList;
@@ -1056,7 +1060,7 @@ CapsuleCoalesce ( // Get SG list entries
//
Status = GetScatterGatherHeadEntries (&ListLength, &VariableArrayAddress);
- if (EFI_ERROR (Status)) {
+ if (EFI_ERROR (Status) || VariableArrayAddress == NULL) {
DEBUG ((DEBUG_ERROR, "%a failed to get Scatter Gather List Head Entries. Status = %r\n", __FUNCTION__, Status));
goto Done;
}
|