]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Library/SmmCorePerformanceLib/SmmCorePerformanceLib.c
MdeModulePkg/PerformanceLib: Add NULL pointer check
[mirror_edk2.git] / MdeModulePkg / Library / SmmCorePerformanceLib / SmmCorePerformanceLib.c
index 0c00fb51e82140e68523540dc70361fc6a3c4756..f18c3fb60df55e930597cd6f7a9f62aafc263c67 100644 (file)
@@ -649,14 +649,13 @@ InsertFpdtRecord (
   case PERF_EVENTSIGNAL_END_ID:\r
   case PERF_CALLBACK_START_ID:\r
   case PERF_CALLBACK_END_ID:\r
-    if (String == NULL) {\r
+    if (String == NULL || Guid == NULL) {\r
       return EFI_INVALID_PARAMETER;\r
     }\r
-    //\r
-    // Cache the event guid in string event record when PcdEdkiiFpdtStringRecordEnableOnly == TRUE\r
-    //\r
-    CopyGuid (&ModuleGuid, Guid);\r
     StringPtr = String;\r
+    if (AsciiStrLen (String) == 0) {\r
+      StringPtr = "unknown name";\r
+    }\r
     if (!PcdGetBool (PcdEdkiiFpdtStringRecordEnableOnly)) {\r
       FpdtRecordPtr.DualGuidStringEvent->Header.Type      = FPDT_DUAL_GUID_STRING_EVENT_TYPE;\r
       FpdtRecordPtr.DualGuidStringEvent->Header.Length    = sizeof (FPDT_DUAL_GUID_STRING_EVENT_RECORD);\r
@@ -734,7 +733,14 @@ InsertFpdtRecord (
     FpdtRecordPtr.DynamicStringEvent->Header.Revision   = FPDT_RECORD_REVISION_1;\r
     FpdtRecordPtr.DynamicStringEvent->ProgressID        = PerfId;\r
     FpdtRecordPtr.DynamicStringEvent->Timestamp         = TimeStamp;\r
-    CopyMem (&FpdtRecordPtr.DynamicStringEvent->Guid, &ModuleGuid, sizeof (FpdtRecordPtr.DynamicStringEvent->Guid));\r
+    if (Guid != NULL) {\r
+      //\r
+      // Cache the event guid in string event record.\r
+      //\r
+      CopyMem (&FpdtRecordPtr.DynamicStringEvent->Guid, Guid, sizeof (FpdtRecordPtr.DynamicStringEvent->Guid));\r
+    } else {\r
+      CopyMem (&FpdtRecordPtr.DynamicStringEvent->Guid, &ModuleGuid, sizeof (FpdtRecordPtr.DynamicStringEvent->Guid));\r
+    }\r
     if (AsciiStrLen (StringPtr) == 0) {\r
       StringPtr = "unknown name";\r
     }\r