]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdeModulePkg/CapsulePei: Add memory pointer check
authorGao, Zhichao <zhichao.gao@intel.com>
Tue, 25 Jun 2019 03:22:49 +0000 (11:22 +0800)
committerHao A Wu <hao.a.wu@intel.com>
Wed, 26 Jun 2019 08:08:48 +0000 (16:08 +0800)
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>
MdeModulePkg/Universal/CapsulePei/UefiCapsule.c

index 8d4ae69bb2e9f14c0257577c2518d855bf4c8aea..51afab7b05752630cf8ae267a10f26e081473a50 100644 (file)
@@ -965,6 +965,10 @@ GetScatterGatherHeadEntries (
     //\r
     if ((ValidIndex + 1) >= TempListLength) {\r
       EnlargedTempList = AllocateZeroPool (TempListLength * 2);\r
+      if (EnlargedTempList == NULL) {\r
+        DEBUG ((DEBUG_ERROR, "Fail to allocate memory!\n"));\r
+        return EFI_OUT_OF_RESOURCES;\r
+      }\r
       CopyMem (EnlargedTempList, TempList, TempListLength);\r
       FreePool (TempList);\r
       TempList = EnlargedTempList;\r
@@ -1056,7 +1060,7 @@ CapsuleCoalesce (
   // Get SG list entries\r
   //\r
   Status = GetScatterGatherHeadEntries (&ListLength, &VariableArrayAddress);\r
-  if (EFI_ERROR (Status)) {\r
+  if (EFI_ERROR (Status) || VariableArrayAddress == NULL) {\r
     DEBUG ((DEBUG_ERROR, "%a failed to get Scatter Gather List Head Entries.  Status = %r\n", __FUNCTION__, Status));\r
     goto Done;\r
   }\r