Update to follow Tiano Coding style. Fix potential NULL memory copy

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chao Zhang <chao.b.zh...@intel.com>
---
 MdeModulePkg/Universal/EsrtDxe/EsrtDxe.c   | 25 ++++++++++++++++++++-----
 MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf |  5 +++--
 MdeModulePkg/Universal/EsrtDxe/EsrtImpl.c  |  8 ++++----
 MdeModulePkg/Universal/EsrtDxe/EsrtImpl.h  | 10 +++++-----
 4 files changed, 32 insertions(+), 16 deletions(-)

diff --git a/MdeModulePkg/Universal/EsrtDxe/EsrtDxe.c 
b/MdeModulePkg/Universal/EsrtDxe/EsrtDxe.c
index 8f76cea..57c4710 100644
--- a/MdeModulePkg/Universal/EsrtDxe/EsrtDxe.c
+++ b/MdeModulePkg/Universal/EsrtDxe/EsrtDxe.c
@@ -33,7 +33,7 @@ ESRT_MANAGEMENT_PROTOCOL  mEsrtManagementProtocolTemplate = {
   Get ESRT entry from ESRT Cache by FwClass Guid 
 
   @param[in]       FwClass                FwClass of Esrt entry to get  
-  @param[in out]  Entry                   Esrt entry returned 
+  @param[in, out]  Entry                   Esrt entry returned 
   
   @retval EFI_SUCCESS                   The variable saving this Esrt Entry 
exists.
   @retval EF_NOT_FOUND                  No correct variable found.
@@ -217,7 +217,7 @@ EsrtDxeRegisterEsrtEntry(
 /**
   This function syn up Cached ESRT with data from FMP instances
   Function should be called after Connect All in order to locate all FMP 
protocols
-  installed
+  installed.
 
   @retval EFI_SUCCESS                      Successfully sync cache repository 
from FMP instances
   @retval EFI_NOT_FOUND                   No FMP Instance are found
@@ -324,7 +324,7 @@ EsrtDxeSyncFmp(
     Status = gBS->HandleProtocol(
                     HandleBuffer[Index1],
                     &gEfiFirmwareManagementProtocolGuid,
-                    &FmpBuf[Index1]
+                    (VOID **)&FmpBuf[Index1]
                     );
 
     if (EFI_ERROR(Status)) {
@@ -587,8 +587,13 @@ EsrtReadyToBootEventNotify (
   EsrtTable->FwResourceCount    = (UINT32)((NonFmpRepositorySize + 
FmpRepositorySize) / sizeof(EFI_SYSTEM_RESOURCE_ENTRY));  
   EsrtTable->FwResourceCountMax = PcdGet32(PcdMaxNonFmpEsrtCacheNum) + 
PcdGet32(PcdMaxFmpEsrtCacheNum);
 
-  CopyMem(EsrtTable + 1, NonFmpEsrtRepository, NonFmpRepositorySize);
-  CopyMem((UINT8 *)(EsrtTable + 1) + NonFmpRepositorySize, FmpEsrtRepository, 
FmpRepositorySize);
+  if (NonFmpRepositorySize != 0 && NonFmpEsrtRepository != NULL) {
+    CopyMem(EsrtTable + 1, NonFmpEsrtRepository, NonFmpRepositorySize);
+  }
+
+  if (FmpRepositorySize != 0 && FmpEsrtRepository != NULL) {
+    CopyMem((UINT8 *)(EsrtTable + 1) + NonFmpRepositorySize, 
FmpEsrtRepository, FmpRepositorySize);
+  }
 
   //
   // Publish Esrt to system config table
@@ -611,7 +616,17 @@ EXIT:
   }
 }
 
+/**
+  The module Entry Point of the Esrt DXE driver that manages cached ESRT 
repository 
+  & publishes ESRT table
 
+  @param[in]  ImageHandle    The firmware allocated handle for the EFI image.
+  @param[in]  SystemTable    A pointer to the EFI System Table.
+
+  @retval EFI_SUCCESS    The entry point is executed successfully.
+  @retval Other          Some error occurs when executing this entry point.
+
+**/
 EFI_STATUS
 EFIAPI
 EsrtDxeEntryPoint (
diff --git a/MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf 
b/MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf
index daadee6..ca0ae33 100644
--- a/MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf
+++ b/MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf
@@ -30,6 +30,7 @@
 #
 
 [Sources]
+  EsrtImpl.h
   EsrtImpl.c
   EsrtDxe.c
 
@@ -50,8 +51,8 @@
   PrintLib
 
 [Guids]
-  gEfiSystemResourceTableGuid             ## PRODUCES
-  gEfiEventReadyToBootGuid                ## CONSUMES
+  gEfiSystemResourceTableGuid             ## PRODUCES             ## 
SystemTable
+  gEfiEventReadyToBootGuid                ## CONSUMES             ## Event
 
 [Protocols]
   gEfiFirmwareManagementProtocolGuid      ## SOMETIMES_CONSUMES
diff --git a/MdeModulePkg/Universal/EsrtDxe/EsrtImpl.c 
b/MdeModulePkg/Universal/EsrtDxe/EsrtImpl.c
index 95f6220..bc28919 100644
--- a/MdeModulePkg/Universal/EsrtDxe/EsrtImpl.c
+++ b/MdeModulePkg/Universal/EsrtDxe/EsrtImpl.c
@@ -174,7 +174,7 @@ InsertEsrtEntry(
       goto EXIT;
     }
 
-    if (RepositorySize != 0) {
+    if (RepositorySize != 0 && EsrtRepository != NULL) {
       CopyMem(EsrtRepositoryNew, EsrtRepository, RepositorySize);
     }
     CopyMem((UINT8 *)EsrtRepositoryNew + RepositorySize, Entry, 
sizeof(EFI_SYSTEM_RESOURCE_ENTRY));
@@ -393,9 +393,9 @@ EXIT:
 /**
   Init one ESRT entry according to input FmpImageInfo (V1, V2, V3) .
 
-  @param[in]    EsrtEntry                Esrt entry to be Init
-  @param[in]    FmpImageInfo        FMP image info descriptor
-  @param[in]   DescriptorVersion    FMP Image info descriptor version
+  @param[in, out]    EsrtEntry                Esrt entry to be Init
+  @param[in]          FmpImageInfo        FMP image info descriptor
+  @param[in]          DescriptorVersion    FMP Image info descriptor version
   
 **/
 VOID 
diff --git a/MdeModulePkg/Universal/EsrtDxe/EsrtImpl.h 
b/MdeModulePkg/Universal/EsrtDxe/EsrtImpl.h
index 227b9b3..a576890 100644
--- a/MdeModulePkg/Universal/EsrtDxe/EsrtImpl.h
+++ b/MdeModulePkg/Universal/EsrtDxe/EsrtImpl.h
@@ -137,9 +137,9 @@ UpdateEsrtEntry(
 /**
   Init one ESRT entry according to input FmpImageInfo (V1, V2, V3) .
 
-  @param[in]    EsrtEntry                Esrt entry to be Init
-  @param[in]    FmpImageInfo        FMP image info descriptor
-  @param[in]   DescriptorVersion    FMP Image info descriptor version
+  @param[in, out]    EsrtEntry                Esrt entry to be Init
+  @param[in]          FmpImageInfo        FMP image info descriptor
+  @param[in]          DescriptorVersion    FMP Image info descriptor version
   
 **/
 VOID 
@@ -153,7 +153,7 @@ SetEsrtEntryFromFmpInfo (
   Get ESRT entry from ESRT Cache by FwClass Guid 
 
   @param[in]       FwClass                FwClass of Esrt entry to get  
-  @param[in out]  Entry                   Esrt entry returned 
+  @param[in, out]  Entry                   Esrt entry returned 
   
   @retval EFI_SUCCESS                   The variable saving this Esrt Entry 
exists.
   @retval EF_NOT_FOUND                  No correct variable found.
@@ -215,7 +215,7 @@ EsrtDxeRegisterEsrtEntry(
 /**
   This function syn up Cached ESRT with data from FMP instances
   Function should be called after Connect All in order to locate all FMP 
protocols
-  installed
+  installed.
 
   @retval EFI_SUCCESS                      Successfully sync cache repository 
from FMP instances
   @retval EFI_NOT_FOUND                   No FMP Instance are found
-- 
1.9.5.msysgit.1


------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to