]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.c
MdeModulePkg/DxeCorePerformanceLib: Switch to UnicodeStrnToAsciiStrS
[mirror_edk2.git] / MdeModulePkg / Library / DxeCorePerformanceLib / DxeCorePerformanceLib.c
index 57a14e8796f67e92474879ea70f66ced388edc48..d378c59dd9648e4af439f82a569b330ad450681d 100644 (file)
 \r
 Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
 (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>\r
-This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution.  The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
@@ -843,7 +837,7 @@ GetDeviceInfoFromHandleAndUpdateLength (
       ControllerNameStringSize = FPDT_MAX_PERF_RECORD_SIZE - (*Length) - 1;\r
     }\r
 \r
-    UnicodeStrToAsciiStrS(StringPtr, ComponentNameString, ControllerNameStringSize);\r
+    UnicodeStrnToAsciiStrS(StringPtr, ControllerNameStringSize - 1, ComponentNameString, ControllerNameStringSize, &ControllerNameStringSize);\r
 \r
     //\r
     // Add a space in the end of the ControllerName\r
@@ -885,7 +879,7 @@ GetDeviceInfoFromHandleAndUpdateLength (
         AsciiStringPtr = ComponentNameString;\r
       }\r
 \r
-      UnicodeStrToAsciiStrS(StringPtr, AsciiStringPtr, DevicePathStringSize);\r
+      UnicodeStrnToAsciiStrS(StringPtr, DevicePathStringSize - 1, AsciiStringPtr, DevicePathStringSize, &DevicePathStringSize);\r
       *Length += (UINT8)DevicePathStringSize;\r
       return EFI_SUCCESS;\r
     }\r
@@ -1004,7 +998,7 @@ InsertFpdtRecord (
   switch (PerfId) {\r
   case MODULE_START_ID:\r
   case MODULE_END_ID:\r
-    GetModuleInfoFromHandle ((EFI_HANDLE *)CallerIdentifier, ModuleName, sizeof (ModuleName), &ModuleGuid);\r
+    GetModuleInfoFromHandle ((EFI_HANDLE)CallerIdentifier, ModuleName, sizeof (ModuleName), &ModuleGuid);\r
     StringPtr = ModuleName;\r
     //\r
     // Cache the offset of start image start record and use to update the start image end record if needed.\r
@@ -1037,7 +1031,7 @@ InsertFpdtRecord (
 \r
   case MODULE_LOADIMAGE_START_ID:\r
   case MODULE_LOADIMAGE_END_ID:\r
-    GetModuleInfoFromHandle ((EFI_HANDLE *)CallerIdentifier, ModuleName, sizeof (ModuleName), &ModuleGuid);\r
+    GetModuleInfoFromHandle ((EFI_HANDLE)CallerIdentifier, ModuleName, sizeof (ModuleName), &ModuleGuid);\r
     StringPtr = ModuleName;\r
     if (PerfId == MODULE_LOADIMAGE_START_ID) {\r
       mLoadImageCount ++;\r
@@ -1077,7 +1071,7 @@ InsertFpdtRecord (
   case MODULE_DB_SUPPORT_END_ID:\r
   case MODULE_DB_STOP_START_ID:\r
   case MODULE_DB_STOP_END_ID:\r
-    GetModuleInfoFromHandle ((EFI_HANDLE *)CallerIdentifier, ModuleName, sizeof (ModuleName), &ModuleGuid);\r
+    GetModuleInfoFromHandle ((EFI_HANDLE)CallerIdentifier, ModuleName, sizeof (ModuleName), &ModuleGuid);\r
     StringPtr = ModuleName;\r
     if (!PcdGetBool (PcdEdkiiFpdtStringRecordEnableOnly)) {\r
       FpdtRecordPtr.GuidQwordEvent->Header.Type           = FPDT_GUID_QWORD_EVENT_TYPE;\r
@@ -1091,7 +1085,7 @@ InsertFpdtRecord (
     break;\r
 \r
   case MODULE_DB_END_ID:\r
-    GetModuleInfoFromHandle ((EFI_HANDLE *)CallerIdentifier, ModuleName, sizeof (ModuleName), &ModuleGuid);\r
+    GetModuleInfoFromHandle ((EFI_HANDLE)CallerIdentifier, ModuleName, sizeof (ModuleName), &ModuleGuid);\r
     StringPtr = ModuleName;\r
     if (!PcdGetBool (PcdEdkiiFpdtStringRecordEnableOnly)) {\r
       FpdtRecordPtr.GuidQwordStringEvent->Header.Type     = FPDT_GUID_QWORD_STRING_EVENT_TYPE;\r
@@ -1111,14 +1105,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
@@ -1138,7 +1131,7 @@ InsertFpdtRecord (
   case PERF_INMODULE_END_ID:\r
   case PERF_CROSSMODULE_START_ID:\r
   case PERF_CROSSMODULE_END_ID:\r
-    GetModuleInfoFromHandle ((EFI_HANDLE *)CallerIdentifier, ModuleName, sizeof (ModuleName), &ModuleGuid);\r
+    GetModuleInfoFromHandle ((EFI_HANDLE)CallerIdentifier, ModuleName, sizeof (ModuleName), &ModuleGuid);\r
     if (String != NULL) {\r
       StringPtr = String;\r
     } else {\r
@@ -1160,7 +1153,7 @@ InsertFpdtRecord (
 \r
   default:\r
     if (Attribute != PerfEntry) {\r
-      GetModuleInfoFromHandle ((EFI_HANDLE *)CallerIdentifier, ModuleName, sizeof (ModuleName), &ModuleGuid);\r
+      GetModuleInfoFromHandle ((EFI_HANDLE)CallerIdentifier, ModuleName, sizeof (ModuleName), &ModuleGuid);\r
       if (String != NULL) {\r
         StringPtr = String;\r
       } else {\r
@@ -1196,7 +1189,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