Reviewed-by: Star Zeng <[email protected]>

-----Original Message-----
From: Wang, Jian J 
Sent: Monday, October 29, 2018 4:22 PM
To: [email protected]
Cc: Wu, Hao A <[email protected]>; Zeng, Star <[email protected]>
Subject: [PATCH] MdeModulePkg/Core: fix an issue of potential NULL pointer 
access

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1286

This issue is introduced by bb685071c2602cf786ea84c69bbebf2158194a38.

The *MemorySpaceMap assigned with NULL (line 1710) value might be accessed 
(line 1726/1730) without any sanity check. Although it won't happen in practice 
because of line 1722, we still need to add check against NULL to make static 
code analyzer happy.

1710  *MemorySpaceMap       = NULL;
....  ...
1722  if (DescriptorCount == *NumberOfDescriptors) { ....  ...
1726    Descriptor = *MemorySpaceMap;
....  ...
1730        BuildMemoryDescriptor (Descriptor, Entry);

Tests:
  Pass build and boot to shell.

Cc: Hao Wu <[email protected]>
Cc: Star Zeng <[email protected]>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Jian J Wang <[email protected]>
---
 MdeModulePkg/Core/Dxe/Gcd/Gcd.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/MdeModulePkg/Core/Dxe/Gcd/Gcd.c b/MdeModulePkg/Core/Dxe/Gcd/Gcd.c 
index 8bbdf7129f..a76d2db73c 100644
--- a/MdeModulePkg/Core/Dxe/Gcd/Gcd.c
+++ b/MdeModulePkg/Core/Dxe/Gcd/Gcd.c
@@ -1719,7 +1719,7 @@ CoreGetMemorySpaceMap (
     // AllocatePool() called below has to be running outside the GCD lock.
     //
     DescriptorCount = CoreCountGcdMapEntry (&mGcdMemorySpaceMap);
-    if (DescriptorCount == *NumberOfDescriptors) {
+    if (DescriptorCount == *NumberOfDescriptors && *MemorySpaceMap != 
+ NULL) {
       //
       // Fill in the MemorySpaceMap if no memory space map change.
       //
--
2.16.2.windows.1

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to