Update to follow Tiano Coding style. Fix potential NULL memory copy
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chao Zhang <[email protected]>
---
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel