]> git.proxmox.com Git - mirror_edk2.git/commitdiff
1. Rollback the changing on replacing MAX_EXTENDED_DATA_SIZE by EFI_STATUS_CODE_DATA_...
authorvanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 23 Nov 2010 07:51:00 +0000 (07:51 +0000)
committervanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 23 Nov 2010 07:51:00 +0000 (07:51 +0000)
   use MAX_EXTENDED_DATA_SIZE as before.
2. Use DEBUG error message instead of ASSERT(FASLE) when extended data is too large
3. Expand 1 for buffer array size to avoid potential issue.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11084 6f19259b-4bc3-4df7-8a09-765794883524

IntelFrameworkModulePkg/Library/DxeReportStatusCodeLibFramework/ReportStatusCodeLib.c
IntelFrameworkModulePkg/Library/SmmRuntimeDxeReportStatusCodeLibFramework/ReportStatusCodeLib.c

index af788cd4c906e395633389451edc5046d106c389..a3603f862ff5d5c547214f819f77c82eff32b7a9 100644 (file)
 #include <Guid/StatusCodeDataTypeDebug.h>\r
 #include <Protocol/StatusCode.h>\r
 \r
+//\r
+// Define the maximum extended data size that is supported when a status code is\r
+// reported at TPL_HIGH_LEVEL.\r
+//\r
+#define MAX_EXTENDED_DATA_SIZE  0x200\r
+\r
 EFI_REPORT_STATUS_CODE  mReportStatusCode = NULL;\r
 \r
 /**\r
@@ -488,7 +494,7 @@ ReportStatusCodeEx (
   EFI_STATUS            Status;\r
   EFI_STATUS_CODE_DATA  *StatusCodeData;\r
   EFI_TPL               Tpl;\r
-  UINT64                Buffer[EFI_STATUS_CODE_DATA_MAX_SIZE / sizeof (UINT64)];\r
+  UINT64                Buffer[(MAX_EXTENDED_DATA_SIZE / sizeof (UINT64)) + 1];\r
 \r
   ASSERT (!((ExtendedData == NULL) && (ExtendedDataSize != 0)));\r
   ASSERT (!((ExtendedData != NULL) && (ExtendedDataSize == 0)));\r
@@ -515,12 +521,12 @@ ReportStatusCodeEx (
     //\r
     // If a buffer could not be allocated, then see if the local variable Buffer can be used\r
     //\r
-    if (ExtendedDataSize > (EFI_STATUS_CODE_DATA_MAX_SIZE - sizeof (EFI_STATUS_CODE_DATA))) {\r
+    if (ExtendedDataSize > (MAX_EXTENDED_DATA_SIZE - sizeof (EFI_STATUS_CODE_DATA))) {\r
       //\r
       // The local variable Buffer not large enough to hold the extended data associated\r
       // with the status code being reported.\r
       //\r
-      ASSERT (FALSE);\r
+      DEBUG ((EFI_D_ERROR, "Status code extended data is too large to be reported!\n"));\r
       return EFI_OUT_OF_RESOURCES;\r
     }\r
     StatusCodeData = (EFI_STATUS_CODE_DATA  *)Buffer;\r
index 6c593429d954036881d606b27c6a39f2106492d4..c49dacaeb1dcd85b1e2d04d0689333fb58adbaf1 100644 (file)
@@ -394,6 +394,7 @@ ReportStatusCodeEx (
   ASSERT (!((ExtendedData != NULL) && (ExtendedDataSize == 0)));\r
 \r
   if (ExtendedDataSize > EFI_STATUS_CODE_DATA_MAX_SIZE) {\r
+    DEBUG ((EFI_D_ERROR, "Status code extended data is too large to be reported!\n"));\r
     return EFI_OUT_OF_RESOURCES;\r
   }\r
 \r