]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdeModulePkg/Variable: Parameterize auth status in VariableParsing
authorMichael Kubacki <michael.a.kubacki@intel.com>
Fri, 27 Sep 2019 22:18:42 +0000 (15:18 -0700)
committerMichael Kubacki <michael.a.kubacki@intel.com>
Wed, 6 Nov 2019 05:55:54 +0000 (21:55 -0800)
The file VariableParsing.c provides generic functionality related
to parsing variable related structures and information. In order to
calculate offsets for certain operations, the functions must know if
authenticated variables are enabled as this increases the size of
variable headers.

This change removes linking against a global variable in an external file
in favor of passing the authenticated variable status as a parameter to
the variable parsing functions.

Cc: Dandan Bi <dandan.bi@intel.com>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Eric Dong <eric.dong@intel.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Hao A Wu <hao.a.wu@intel.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Signed-off-by: Michael Kubacki <michael.a.kubacki@intel.com>
Reviewed-by: Jian J Wang <jian.j.wang@intel.com>
Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c
MdeModulePkg/Universal/Variable/RuntimeDxe/VariableExLib.c
MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.c
MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.h
MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c

index 5cc12c2ae083dd6c6477aa0371ad9c569dcbd6a4..2e32905dfe8c97fe53d4d8342996b81152b8ef5f 100644 (file)
@@ -311,7 +311,7 @@ RecordVarErrorFlag (
              FALSE\r
              );\r
   if (!EFI_ERROR (Status)) {\r
-    VarErrFlag = (VAR_ERROR_FLAG *) GetVariableDataPtr (Variable.CurrPtr);\r
+    VarErrFlag = (VAR_ERROR_FLAG *) GetVariableDataPtr (Variable.CurrPtr, mVariableModuleGlobal->VariableGlobal.AuthFormat);\r
     TempFlag = *VarErrFlag;\r
     TempFlag &= Flag;\r
     if (TempFlag == *VarErrFlag) {\r
@@ -369,7 +369,7 @@ InitializeVarErrorFlag (
              FALSE\r
              );\r
   if (!EFI_ERROR (Status)) {\r
-    VarErrFlag = *((VAR_ERROR_FLAG *) GetVariableDataPtr (Variable.CurrPtr));\r
+    VarErrFlag = *((VAR_ERROR_FLAG *) GetVariableDataPtr (Variable.CurrPtr, mVariableModuleGlobal->VariableGlobal.AuthFormat));\r
     if (VarErrFlag == Flag) {\r
       return;\r
     }\r
@@ -410,7 +410,11 @@ IsUserVariable (
   // then no need to check if the variable is user variable or not specially.\r
   //\r
   if (mEndOfDxe && (mVariableModuleGlobal->CommonMaxUserVariableSpace != mVariableModuleGlobal->CommonVariableSpace)) {\r
-    if (VarCheckLibVariablePropertyGet (GetVariableNamePtr (Variable), GetVendorGuidPtr (Variable), &Property) == EFI_NOT_FOUND) {\r
+    if (VarCheckLibVariablePropertyGet (\r
+          GetVariableNamePtr (Variable, mVariableModuleGlobal->VariableGlobal.AuthFormat),\r
+          GetVendorGuidPtr (Variable, mVariableModuleGlobal->VariableGlobal.AuthFormat),\r
+          &Property\r
+          ) == EFI_NOT_FOUND) {\r
       return TRUE;\r
     }\r
   }\r
@@ -439,10 +443,14 @@ CalculateCommonUserVariableTotalSize (
   if (mEndOfDxe && (mVariableModuleGlobal->CommonMaxUserVariableSpace != mVariableModuleGlobal->CommonVariableSpace)) {\r
     Variable = GetStartPointer (mNvVariableCache);\r
     while (IsValidVariableHeader (Variable, GetEndPointer (mNvVariableCache))) {\r
-      NextVariable = GetNextVariablePtr (Variable);\r
+      NextVariable = GetNextVariablePtr (Variable, mVariableModuleGlobal->VariableGlobal.AuthFormat);\r
       VariableSize = (UINTN) NextVariable - (UINTN) Variable;\r
       if ((Variable->Attributes & EFI_VARIABLE_HARDWARE_ERROR_RECORD) != EFI_VARIABLE_HARDWARE_ERROR_RECORD) {\r
-        if (VarCheckLibVariablePropertyGet (GetVariableNamePtr (Variable), GetVendorGuidPtr (Variable), &Property) == EFI_NOT_FOUND) {\r
+        if (VarCheckLibVariablePropertyGet (\r
+              GetVariableNamePtr (Variable, mVariableModuleGlobal->VariableGlobal.AuthFormat),\r
+              GetVendorGuidPtr (Variable, mVariableModuleGlobal->VariableGlobal.AuthFormat),\r
+              &Property\r
+              ) == EFI_NOT_FOUND) {\r
           //\r
           // No property, it is user variable.\r
           //\r
@@ -518,7 +526,9 @@ Reclaim (
   UINTN                 HwErrVariableTotalSize;\r
   VARIABLE_HEADER       *UpdatingVariable;\r
   VARIABLE_HEADER       *UpdatingInDeletedTransition;\r
+  BOOLEAN               AuthFormat;\r
 \r
+  AuthFormat = mVariableModuleGlobal->VariableGlobal.AuthFormat;\r
   UpdatingVariable = NULL;\r
   UpdatingInDeletedTransition = NULL;\r
   if (UpdatingPtrTrack != NULL) {\r
@@ -540,7 +550,7 @@ Reclaim (
     MaximumBufferSize = sizeof (VARIABLE_STORE_HEADER);\r
 \r
     while (IsValidVariableHeader (Variable, GetEndPointer (VariableStoreHeader))) {\r
-      NextVariable = GetNextVariablePtr (Variable);\r
+      NextVariable = GetNextVariablePtr (Variable, AuthFormat);\r
       if ((Variable->State == VAR_ADDED || Variable->State == (VAR_IN_DELETED_TRANSITION & VAR_ADDED)) &&\r
           Variable != UpdatingVariable &&\r
           Variable != UpdatingInDeletedTransition\r
@@ -590,7 +600,7 @@ Reclaim (
   //\r
   Variable = GetStartPointer (VariableStoreHeader);\r
   while (IsValidVariableHeader (Variable, GetEndPointer (VariableStoreHeader))) {\r
-    NextVariable = GetNextVariablePtr (Variable);\r
+    NextVariable = GetNextVariablePtr (Variable, AuthFormat);\r
     if (Variable != UpdatingVariable && Variable->State == VAR_ADDED) {\r
       VariableSize = (UINTN) NextVariable - (UINTN) Variable;\r
       CopyMem (CurrPtr, (UINT8 *) Variable, VariableSize);\r
@@ -612,7 +622,7 @@ Reclaim (
   //\r
   Variable = GetStartPointer (VariableStoreHeader);\r
   while (IsValidVariableHeader (Variable, GetEndPointer (VariableStoreHeader))) {\r
-    NextVariable = GetNextVariablePtr (Variable);\r
+    NextVariable = GetNextVariablePtr (Variable, AuthFormat);\r
     if (Variable != UpdatingVariable && Variable != UpdatingInDeletedTransition && Variable->State == (VAR_IN_DELETED_TRANSITION & VAR_ADDED)) {\r
 \r
       //\r
@@ -624,13 +634,14 @@ Reclaim (
       FoundAdded = FALSE;\r
       AddedVariable = GetStartPointer ((VARIABLE_STORE_HEADER *) ValidBuffer);\r
       while (IsValidVariableHeader (AddedVariable, GetEndPointer ((VARIABLE_STORE_HEADER *) ValidBuffer))) {\r
-        NextAddedVariable = GetNextVariablePtr (AddedVariable);\r
-        NameSize = NameSizeOfVariable (AddedVariable);\r
-        if (CompareGuid (GetVendorGuidPtr (AddedVariable), GetVendorGuidPtr (Variable)) &&\r
-            NameSize == NameSizeOfVariable (Variable)\r
-           ) {\r
-          Point0 = (VOID *) GetVariableNamePtr (AddedVariable);\r
-          Point1 = (VOID *) GetVariableNamePtr (Variable);\r
+        NextAddedVariable = GetNextVariablePtr (AddedVariable, AuthFormat);\r
+        NameSize = NameSizeOfVariable (AddedVariable, AuthFormat);\r
+        if (CompareGuid (\r
+              GetVendorGuidPtr (AddedVariable, AuthFormat),\r
+              GetVendorGuidPtr (Variable, AuthFormat)\r
+            ) && NameSize == NameSizeOfVariable (Variable, AuthFormat)) {\r
+          Point0 = (VOID *) GetVariableNamePtr (AddedVariable, AuthFormat);\r
+          Point1 = (VOID *) GetVariableNamePtr (Variable, AuthFormat);\r
           if (CompareMem (Point0, Point1, NameSize) == 0) {\r
             FoundAdded = TRUE;\r
             break;\r
@@ -735,7 +746,7 @@ Reclaim (
       mVariableModuleGlobal->CommonUserVariableTotalSize = 0;\r
       Variable = GetStartPointer ((VARIABLE_STORE_HEADER *)(UINTN)VariableBase);\r
       while (IsValidVariableHeader (Variable, GetEndPointer ((VARIABLE_STORE_HEADER *)(UINTN)VariableBase))) {\r
-        NextVariable = GetNextVariablePtr (Variable);\r
+        NextVariable = GetNextVariablePtr (Variable, AuthFormat);\r
         VariableSize = (UINTN) NextVariable - (UINTN) Variable;\r
         if ((Variable->Attributes & EFI_VARIABLE_HARDWARE_ERROR_RECORD) == EFI_VARIABLE_HARDWARE_ERROR_RECORD) {\r
           mVariableModuleGlobal->HwErrVariableTotalSize += VariableSize;\r
@@ -829,7 +840,13 @@ FindVariable (
     PtrTrack->EndPtr   = GetEndPointer   (VariableStoreHeader[Type]);\r
     PtrTrack->Volatile = (BOOLEAN) (Type == VariableStoreTypeVolatile);\r
 \r
-    Status = FindVariableEx (VariableName, VendorGuid, IgnoreRtCheck, PtrTrack);\r
+    Status =  FindVariableEx (\r
+                VariableName,\r
+                VendorGuid,\r
+                IgnoreRtCheck,\r
+                PtrTrack,\r
+                mVariableModuleGlobal->VariableGlobal.AuthFormat\r
+                );\r
     if (!EFI_ERROR (Status)) {\r
       return Status;\r
     }\r
@@ -1199,7 +1216,11 @@ CheckRemainingSpaceForConsistencyInternal (
     VarNameSize += GET_PAD_SIZE (VarNameSize);\r
     VarDataSize  = VariableEntry->VariableSize;\r
     VarDataSize += GET_PAD_SIZE (VarDataSize);\r
-    VariableEntry->VariableSize = HEADER_ALIGN (GetVariableHeaderSize () + VarNameSize + VarDataSize);\r
+    VariableEntry->VariableSize = HEADER_ALIGN (\r
+                                    GetVariableHeaderSize (\r
+                                      mVariableModuleGlobal->VariableGlobal.AuthFormat\r
+                                      ) + VarNameSize + VarDataSize\r
+                                    );\r
 \r
     TotalNeededSize += VariableEntry->VariableSize;\r
     VariableEntry = VA_ARG (Args, VARIABLE_ENTRY_CONSISTENCY *);\r
@@ -1232,13 +1253,14 @@ CheckRemainingSpaceForConsistencyInternal (
                VariableEntry->Name,\r
                VariableEntry->Guid,\r
                FALSE,\r
-               &VariablePtrTrack\r
+               &VariablePtrTrack,\r
+               mVariableModuleGlobal->VariableGlobal.AuthFormat\r
                );\r
     if (!EFI_ERROR (Status)) {\r
       //\r
       // Get size of Variable[Index].\r
       //\r
-      NextVariable = GetNextVariablePtr (VariablePtrTrack.CurrPtr);\r
+      NextVariable = GetNextVariablePtr (VariablePtrTrack.CurrPtr, mVariableModuleGlobal->VariableGlobal.AuthFormat);\r
       OriginalVarSize = (UINTN) NextVariable - (UINTN) VariablePtrTrack.CurrPtr;\r
       //\r
       // Add the original size of Variable[Index] to remaining variable storage size.\r
@@ -1410,8 +1432,8 @@ AutoUpdateLangVariable (
       // Update Lang\r
       //\r
       VariableName = EFI_PLATFORM_LANG_VARIABLE_NAME;\r
-      Data         = GetVariableDataPtr (Variable.CurrPtr);\r
-      DataSize     = DataSizeOfVariable (Variable.CurrPtr);\r
+      Data         = GetVariableDataPtr (Variable.CurrPtr, mVariableModuleGlobal->VariableGlobal.AuthFormat);\r
+      DataSize     = DataSizeOfVariable (Variable.CurrPtr, mVariableModuleGlobal->VariableGlobal.AuthFormat);\r
     } else {\r
       Status = FindVariable (EFI_LANG_VARIABLE_NAME, &gEfiGlobalVariableGuid, &Variable, &mVariableModuleGlobal->VariableGlobal, FALSE);\r
       if (!EFI_ERROR (Status)) {\r
@@ -1419,8 +1441,8 @@ AutoUpdateLangVariable (
         // Update PlatformLang\r
         //\r
         VariableName = EFI_LANG_VARIABLE_NAME;\r
-        Data         = GetVariableDataPtr (Variable.CurrPtr);\r
-        DataSize     = DataSizeOfVariable (Variable.CurrPtr);\r
+        Data         = GetVariableDataPtr (Variable.CurrPtr, mVariableModuleGlobal->VariableGlobal.AuthFormat);\r
+        DataSize     = DataSizeOfVariable (Variable.CurrPtr, mVariableModuleGlobal->VariableGlobal.AuthFormat);\r
       } else {\r
         //\r
         // Neither PlatformLang nor Lang is set, directly return\r
@@ -1598,6 +1620,7 @@ UpdateVariable (
   BOOLEAN                             IsCommonVariable;\r
   BOOLEAN                             IsCommonUserVariable;\r
   AUTHENTICATED_VARIABLE_HEADER       *AuthVariable;\r
+  BOOLEAN                             AuthFormat;\r
 \r
   if (mVariableModuleGlobal->FvbInstance == NULL && !mVariableModuleGlobal->VariableGlobal.EmuNvMode) {\r
     //\r
@@ -1619,6 +1642,8 @@ UpdateVariable (
     }\r
   }\r
 \r
+  AuthFormat = mVariableModuleGlobal->VariableGlobal.AuthFormat;\r
+\r
   //\r
   // Check if CacheVariable points to the variable in variable HOB.\r
   // If yes, let CacheVariable points to the variable in NV variable cache.\r
@@ -1630,7 +1655,7 @@ UpdateVariable (
     CacheVariable->StartPtr = GetStartPointer (mNvVariableCache);\r
     CacheVariable->EndPtr   = GetEndPointer   (mNvVariableCache);\r
     CacheVariable->Volatile = FALSE;\r
-    Status = FindVariableEx (VariableName, VendorGuid, FALSE, CacheVariable);\r
+    Status = FindVariableEx (VariableName, VendorGuid, FALSE, CacheVariable, AuthFormat);\r
     if (CacheVariable->CurrPtr == NULL || EFI_ERROR (Status)) {\r
       //\r
       // There is no matched variable in NV variable cache.\r
@@ -1770,8 +1795,8 @@ UpdateVariable (
     // If the variable is marked valid, and the same data has been passed in,\r
     // then return to the caller immediately.\r
     //\r
-    if (DataSizeOfVariable (CacheVariable->CurrPtr) == DataSize &&\r
-        (CompareMem (Data, GetVariableDataPtr (CacheVariable->CurrPtr), DataSize) == 0) &&\r
+    if (DataSizeOfVariable (CacheVariable->CurrPtr, AuthFormat) == DataSize &&\r
+        (CompareMem (Data, GetVariableDataPtr (CacheVariable->CurrPtr, AuthFormat), DataSize) == 0) &&\r
         ((Attributes & EFI_VARIABLE_APPEND_WRITE) == 0) &&\r
         (TimeStamp == NULL)) {\r
       //\r
@@ -1791,9 +1816,13 @@ UpdateVariable (
         // NOTE: From 0 to DataOffset of NextVariable is reserved for Variable Header and Name.\r
         // From DataOffset of NextVariable is to save the existing variable data.\r
         //\r
-        DataOffset = GetVariableDataOffset (CacheVariable->CurrPtr);\r
+        DataOffset = GetVariableDataOffset (CacheVariable->CurrPtr, AuthFormat);\r
         BufferForMerge = (UINT8 *) ((UINTN) NextVariable + DataOffset);\r
-        CopyMem (BufferForMerge, (UINT8 *) ((UINTN) CacheVariable->CurrPtr + DataOffset), DataSizeOfVariable (CacheVariable->CurrPtr));\r
+        CopyMem (\r
+          BufferForMerge,\r
+          (UINT8 *) ((UINTN) CacheVariable->CurrPtr + DataOffset),\r
+          DataSizeOfVariable (CacheVariable->CurrPtr, AuthFormat)\r
+          );\r
 \r
         //\r
         // Set Max Auth/Non-Volatile/Volatile Variable Data Size as default MaxDataSize.\r
@@ -1814,15 +1843,22 @@ UpdateVariable (
           MaxDataSize = PcdGet32 (PcdMaxHardwareErrorVariableSize) - DataOffset;\r
         }\r
 \r
-        if (DataSizeOfVariable (CacheVariable->CurrPtr) + DataSize > MaxDataSize) {\r
+        if (DataSizeOfVariable (CacheVariable->CurrPtr, AuthFormat) + DataSize > MaxDataSize) {\r
           //\r
           // Existing data size + new data size exceed maximum variable size limitation.\r
           //\r
           Status = EFI_INVALID_PARAMETER;\r
           goto Done;\r
         }\r
-        CopyMem ((UINT8*) ((UINTN) BufferForMerge + DataSizeOfVariable (CacheVariable->CurrPtr)), Data, DataSize);\r
-        MergedBufSize = DataSizeOfVariable (CacheVariable->CurrPtr) + DataSize;\r
+        CopyMem (\r
+          (UINT8*) (\r
+            (UINTN) BufferForMerge + DataSizeOfVariable (CacheVariable->CurrPtr, AuthFormat)\r
+            ),\r
+          Data,\r
+          DataSize\r
+          );\r
+        MergedBufSize = DataSizeOfVariable (CacheVariable->CurrPtr, AuthFormat) +\r
+                          DataSize;\r
 \r
         //\r
         // BufferForMerge(from DataOffset of NextVariable) has included the merged existing and new data.\r
@@ -1925,7 +1961,7 @@ UpdateVariable (
   //\r
   NextVariable->Attributes  = Attributes & (~EFI_VARIABLE_APPEND_WRITE);\r
 \r
-  VarNameOffset                 = GetVariableHeaderSize ();\r
+  VarNameOffset                 = GetVariableHeaderSize (AuthFormat);\r
   VarNameSize                   = StrSize (VariableName);\r
   CopyMem (\r
     (UINT8 *) ((UINTN) NextVariable + VarNameOffset),\r
@@ -1946,14 +1982,18 @@ UpdateVariable (
       );\r
   }\r
 \r
-  CopyMem (GetVendorGuidPtr (NextVariable), VendorGuid, sizeof (EFI_GUID));\r
+  CopyMem (\r
+    GetVendorGuidPtr (NextVariable, AuthFormat),\r
+    VendorGuid,\r
+    sizeof (EFI_GUID)\r
+    );\r
   //\r
   // There will be pad bytes after Data, the NextVariable->NameSize and\r
   // NextVariable->DataSize should not include pad size so that variable\r
   // service can get actual size in GetVariable.\r
   //\r
-  SetNameSizeOfVariable (NextVariable, VarNameSize);\r
-  SetDataSizeOfVariable (NextVariable, DataSize);\r
+  SetNameSizeOfVariable (NextVariable, VarNameSize, AuthFormat);\r
+  SetDataSizeOfVariable (NextVariable, DataSize, AuthFormat);\r
 \r
   //\r
   // The actual size of the variable that stores in storage should\r
@@ -2036,7 +2076,7 @@ UpdateVariable (
                  TRUE,\r
                  Fvb,\r
                  mVariableModuleGlobal->NonVolatileLastVariableOffset,\r
-                 (UINT32) GetVariableHeaderSize (),\r
+                 (UINT32) GetVariableHeaderSize (AuthFormat),\r
                  (UINT8 *) NextVariable\r
                  );\r
 \r
@@ -2069,9 +2109,9 @@ UpdateVariable (
                  FALSE,\r
                  TRUE,\r
                  Fvb,\r
-                 mVariableModuleGlobal->NonVolatileLastVariableOffset + GetVariableHeaderSize (),\r
-                 (UINT32) (VarSize - GetVariableHeaderSize ()),\r
-                 (UINT8 *) NextVariable + GetVariableHeaderSize ()\r
+                 mVariableModuleGlobal->NonVolatileLastVariableOffset + GetVariableHeaderSize (AuthFormat),\r
+                 (UINT32) (VarSize - GetVariableHeaderSize (AuthFormat)),\r
+                 (UINT8 *) NextVariable + GetVariableHeaderSize (AuthFormat)\r
                  );\r
 \r
       if (EFI_ERROR (Status)) {\r
@@ -2291,7 +2331,7 @@ VariableServiceGetVariable (
   //\r
   // Get data size\r
   //\r
-  VarDataSize = DataSizeOfVariable (Variable.CurrPtr);\r
+  VarDataSize = DataSizeOfVariable (Variable.CurrPtr, mVariableModuleGlobal->VariableGlobal.AuthFormat);\r
   ASSERT (VarDataSize != 0);\r
 \r
   if (*DataSize >= VarDataSize) {\r
@@ -2300,7 +2340,7 @@ VariableServiceGetVariable (
       goto Done;\r
     }\r
 \r
-    CopyMem (Data, GetVariableDataPtr (Variable.CurrPtr), VarDataSize);\r
+    CopyMem (Data, GetVariableDataPtr (Variable.CurrPtr, mVariableModuleGlobal->VariableGlobal.AuthFormat), VarDataSize);\r
     if (Attributes != NULL) {\r
       *Attributes = Variable.CurrPtr->Attributes;\r
     }\r
@@ -2357,6 +2397,7 @@ VariableServiceGetNextVariableName (
   EFI_STATUS              Status;\r
   UINTN                   MaxLen;\r
   UINTN                   VarNameSize;\r
+  BOOLEAN                 AuthFormat;\r
   VARIABLE_HEADER         *VariablePtr;\r
   VARIABLE_STORE_HEADER   *VariableStoreHeader[VariableStoreTypeMax];\r
 \r
@@ -2364,6 +2405,8 @@ VariableServiceGetNextVariableName (
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
+  AuthFormat = mVariableModuleGlobal->VariableGlobal.AuthFormat;\r
+\r
   //\r
   // Calculate the possible maximum length of name string, including the Null terminator.\r
   //\r
@@ -2387,13 +2430,27 @@ VariableServiceGetNextVariableName (
   VariableStoreHeader[VariableStoreTypeHob]      = (VARIABLE_STORE_HEADER *) (UINTN) mVariableModuleGlobal->VariableGlobal.HobVariableBase;\r
   VariableStoreHeader[VariableStoreTypeNv]       = mNvVariableCache;\r
 \r
-  Status = VariableServiceGetNextVariableInternal (VariableName, VendorGuid, VariableStoreHeader, &VariablePtr);\r
+  Status =  VariableServiceGetNextVariableInternal (\r
+              VariableName,\r
+              VendorGuid,\r
+              VariableStoreHeader,\r
+              &VariablePtr,\r
+              AuthFormat\r
+              );\r
   if (!EFI_ERROR (Status)) {\r
-    VarNameSize = NameSizeOfVariable (VariablePtr);\r
+    VarNameSize = NameSizeOfVariable (VariablePtr, AuthFormat);\r
     ASSERT (VarNameSize != 0);\r
     if (VarNameSize <= *VariableNameSize) {\r
-      CopyMem (VariableName, GetVariableNamePtr (VariablePtr), VarNameSize);\r
-      CopyMem (VendorGuid, GetVendorGuidPtr (VariablePtr), sizeof (EFI_GUID));\r
+      CopyMem (\r
+        VariableName,\r
+        GetVariableNamePtr (VariablePtr, AuthFormat),\r
+        VarNameSize\r
+        );\r
+      CopyMem (\r
+        VendorGuid,\r
+        GetVendorGuidPtr (VariablePtr, AuthFormat),\r
+        sizeof (EFI_GUID)\r
+        );\r
       Status = EFI_SUCCESS;\r
     } else {\r
       Status = EFI_BUFFER_TOO_SMALL;\r
@@ -2446,6 +2503,9 @@ VariableServiceSetVariable (
   VARIABLE_HEADER                     *NextVariable;\r
   EFI_PHYSICAL_ADDRESS                Point;\r
   UINTN                               PayloadSize;\r
+  BOOLEAN                             AuthFormat;\r
+\r
+  AuthFormat = mVariableModuleGlobal->VariableGlobal.AuthFormat;\r
 \r
   //\r
   // Check input parameters.\r
@@ -2544,7 +2604,8 @@ VariableServiceSetVariable (
   //  bytes for HwErrRec#### variable.\r
   //\r
   if ((Attributes & EFI_VARIABLE_HARDWARE_ERROR_RECORD) == EFI_VARIABLE_HARDWARE_ERROR_RECORD) {\r
-    if (StrSize (VariableName) + PayloadSize > PcdGet32 (PcdMaxHardwareErrorVariableSize) - GetVariableHeaderSize ()) {\r
+    if (StrSize (VariableName) + PayloadSize >\r
+        PcdGet32 (PcdMaxHardwareErrorVariableSize) - GetVariableHeaderSize (AuthFormat)) {\r
       return EFI_INVALID_PARAMETER;\r
     }\r
   } else {\r
@@ -2553,7 +2614,9 @@ VariableServiceSetVariable (
     //  the DataSize is limited to maximum size of Max(Auth|Volatile)VariableSize bytes.\r
     //\r
     if ((Attributes & VARIABLE_ATTRIBUTE_AT_AW) != 0) {\r
-      if (StrSize (VariableName) + PayloadSize > mVariableModuleGlobal->MaxAuthVariableSize - GetVariableHeaderSize ()) {\r
+      if (StrSize (VariableName) + PayloadSize >\r
+          mVariableModuleGlobal->MaxAuthVariableSize -\r
+          GetVariableHeaderSize (AuthFormat)) {\r
         DEBUG ((DEBUG_ERROR,\r
           "%a: Failed to set variable '%s' with Guid %g\n",\r
           __FUNCTION__, VariableName, VendorGuid));\r
@@ -2562,12 +2625,13 @@ VariableServiceSetVariable (
           "MaxAuthVariableSize(0x%x) - HeaderSize(0x%x)\n",\r
           StrSize (VariableName), PayloadSize,\r
           mVariableModuleGlobal->MaxAuthVariableSize,\r
-          GetVariableHeaderSize ()\r
+          GetVariableHeaderSize (AuthFormat)\r
           ));\r
         return EFI_INVALID_PARAMETER;\r
       }\r
     } else if ((Attributes & EFI_VARIABLE_NON_VOLATILE) != 0) {\r
-      if (StrSize (VariableName) + PayloadSize > mVariableModuleGlobal->MaxVariableSize - GetVariableHeaderSize ()) {\r
+      if (StrSize (VariableName) + PayloadSize >\r
+          mVariableModuleGlobal->MaxVariableSize - GetVariableHeaderSize (AuthFormat)) {\r
         DEBUG ((DEBUG_ERROR,\r
           "%a: Failed to set variable '%s' with Guid %g\n",\r
           __FUNCTION__, VariableName, VendorGuid));\r
@@ -2576,12 +2640,13 @@ VariableServiceSetVariable (
           "MaxVariableSize(0x%x) - HeaderSize(0x%x)\n",\r
           StrSize (VariableName), PayloadSize,\r
           mVariableModuleGlobal->MaxVariableSize,\r
-          GetVariableHeaderSize ()\r
+          GetVariableHeaderSize (AuthFormat)\r
           ));\r
         return EFI_INVALID_PARAMETER;\r
       }\r
     } else {\r
-      if (StrSize (VariableName) + PayloadSize > mVariableModuleGlobal->MaxVolatileVariableSize - GetVariableHeaderSize ()) {\r
+      if (StrSize (VariableName) + PayloadSize >\r
+          mVariableModuleGlobal->MaxVolatileVariableSize - GetVariableHeaderSize (AuthFormat)) {\r
         DEBUG ((DEBUG_ERROR,\r
           "%a: Failed to set variable '%s' with Guid %g\n",\r
           __FUNCTION__, VariableName, VendorGuid));\r
@@ -2590,7 +2655,7 @@ VariableServiceSetVariable (
           "MaxVolatileVariableSize(0x%x) - HeaderSize(0x%x)\n",\r
           StrSize (VariableName), PayloadSize,\r
           mVariableModuleGlobal->MaxVolatileVariableSize,\r
-          GetVariableHeaderSize ()\r
+          GetVariableHeaderSize (AuthFormat)\r
           ));\r
         return EFI_INVALID_PARAMETER;\r
       }\r
@@ -2629,7 +2694,7 @@ VariableServiceSetVariable (
     //\r
     NextVariable  = GetStartPointer ((VARIABLE_STORE_HEADER *) (UINTN) Point);\r
     while (IsValidVariableHeader (NextVariable, GetEndPointer ((VARIABLE_STORE_HEADER *) (UINTN) Point))) {\r
-      NextVariable = GetNextVariablePtr (NextVariable);\r
+      NextVariable = GetNextVariablePtr (NextVariable, AuthFormat);\r
     }\r
     mVariableModuleGlobal->NonVolatileLastVariableOffset = (UINTN) NextVariable - (UINTN) Point;\r
   }\r
@@ -2754,7 +2819,8 @@ VariableServiceQueryVariableInfoInternal (
   //\r
   if ((Attributes & (EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_HARDWARE_ERROR_RECORD)) == (EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_HARDWARE_ERROR_RECORD)) {\r
     *MaximumVariableStorageSize = PcdGet32 (PcdHwErrStorageSize);\r
-    *MaximumVariableSize = PcdGet32 (PcdMaxHardwareErrorVariableSize) - GetVariableHeaderSize ();\r
+    *MaximumVariableSize =  PcdGet32 (PcdMaxHardwareErrorVariableSize) -\r
+                              GetVariableHeaderSize (mVariableModuleGlobal->VariableGlobal.AuthFormat);\r
   } else {\r
     if ((Attributes & EFI_VARIABLE_NON_VOLATILE) != 0) {\r
       if (AtRuntime ()) {\r
@@ -2768,11 +2834,14 @@ VariableServiceQueryVariableInfoInternal (
     // Let *MaximumVariableSize be Max(Auth|Volatile)VariableSize with the exception of the variable header size.\r
     //\r
     if ((Attributes & VARIABLE_ATTRIBUTE_AT_AW) != 0) {\r
-      *MaximumVariableSize = mVariableModuleGlobal->MaxAuthVariableSize - GetVariableHeaderSize ();\r
+      *MaximumVariableSize =  mVariableModuleGlobal->MaxAuthVariableSize -\r
+                                GetVariableHeaderSize (mVariableModuleGlobal->VariableGlobal.AuthFormat);\r
     } else if ((Attributes & EFI_VARIABLE_NON_VOLATILE) != 0) {\r
-      *MaximumVariableSize = mVariableModuleGlobal->MaxVariableSize - GetVariableHeaderSize ();\r
+      *MaximumVariableSize =  mVariableModuleGlobal->MaxVariableSize -\r
+                                GetVariableHeaderSize (mVariableModuleGlobal->VariableGlobal.AuthFormat);\r
     } else {\r
-      *MaximumVariableSize = mVariableModuleGlobal->MaxVolatileVariableSize - GetVariableHeaderSize ();\r
+      *MaximumVariableSize =   mVariableModuleGlobal->MaxVolatileVariableSize -\r
+                                GetVariableHeaderSize (mVariableModuleGlobal->VariableGlobal.AuthFormat);\r
     }\r
   }\r
 \r
@@ -2785,7 +2854,7 @@ VariableServiceQueryVariableInfoInternal (
   // Now walk through the related variable store.\r
   //\r
   while (IsValidVariableHeader (Variable, GetEndPointer (VariableStoreHeader))) {\r
-    NextVariable = GetNextVariablePtr (Variable);\r
+    NextVariable = GetNextVariablePtr (Variable, mVariableModuleGlobal->VariableGlobal.AuthFormat);\r
     VariableSize = (UINT64) (UINTN) NextVariable - (UINT64) (UINTN) Variable;\r
 \r
     if (AtRuntime ()) {\r
@@ -2820,10 +2889,11 @@ VariableServiceQueryVariableInfoInternal (
         VariablePtrTrack.StartPtr = GetStartPointer (VariableStoreHeader);\r
         VariablePtrTrack.EndPtr   = GetEndPointer   (VariableStoreHeader);\r
         Status = FindVariableEx (\r
-                   GetVariableNamePtr (Variable),\r
-                   GetVendorGuidPtr (Variable),\r
+                   GetVariableNamePtr (Variable, mVariableModuleGlobal->VariableGlobal.AuthFormat),\r
+                   GetVendorGuidPtr (Variable, mVariableModuleGlobal->VariableGlobal.AuthFormat),\r
                    FALSE,\r
-                   &VariablePtrTrack\r
+                   &VariablePtrTrack,\r
+                   mVariableModuleGlobal->VariableGlobal.AuthFormat\r
                    );\r
         if (!EFI_ERROR (Status) && VariablePtrTrack.CurrPtr->State != VAR_ADDED) {\r
           if ((Variable->Attributes & EFI_VARIABLE_HARDWARE_ERROR_RECORD) == EFI_VARIABLE_HARDWARE_ERROR_RECORD) {\r
@@ -2851,10 +2921,13 @@ VariableServiceQueryVariableInfoInternal (
     }\r
   }\r
 \r
-  if (*RemainingVariableStorageSize < GetVariableHeaderSize ()) {\r
+  if (*RemainingVariableStorageSize < GetVariableHeaderSize (mVariableModuleGlobal->VariableGlobal.AuthFormat)) {\r
     *MaximumVariableSize = 0;\r
-  } else if ((*RemainingVariableStorageSize - GetVariableHeaderSize ()) < *MaximumVariableSize) {\r
-    *MaximumVariableSize = *RemainingVariableStorageSize - GetVariableHeaderSize ();\r
+  } else if ((*RemainingVariableStorageSize - GetVariableHeaderSize (mVariableModuleGlobal->VariableGlobal.AuthFormat)) <\r
+              *MaximumVariableSize\r
+              ) {\r
+    *MaximumVariableSize = *RemainingVariableStorageSize -\r
+                             GetVariableHeaderSize (mVariableModuleGlobal->VariableGlobal.AuthFormat);\r
   }\r
 \r
   return EFI_SUCCESS;\r
@@ -3331,7 +3404,7 @@ InitNonVolatileVariableStore (
   //\r
   Variable  = GetStartPointer (mNvVariableCache);\r
   while (IsValidVariableHeader (Variable, GetEndPointer (mNvVariableCache))) {\r
-    NextVariable = GetNextVariablePtr (Variable);\r
+    NextVariable = GetNextVariablePtr (Variable, mVariableModuleGlobal->VariableGlobal.AuthFormat);\r
     VariableSize = (UINTN) NextVariable - (UINTN) Variable;\r
     if ((Variable->Attributes & (EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_HARDWARE_ERROR_RECORD)) == (EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_HARDWARE_ERROR_RECORD)) {\r
       mVariableModuleGlobal->HwErrVariableTotalSize += VariableSize;\r
@@ -3365,8 +3438,10 @@ FlushHobVariableToFlash (
   VOID                          *VariableData;\r
   VARIABLE_POINTER_TRACK        VariablePtrTrack;\r
   BOOLEAN                       ErrorFlag;\r
+  BOOLEAN                       AuthFormat;\r
 \r
   ErrorFlag = FALSE;\r
+  AuthFormat = mVariableModuleGlobal->VariableGlobal.AuthFormat;\r
 \r
   //\r
   // Flush the HOB variable to flash.\r
@@ -3379,7 +3454,7 @@ FlushHobVariableToFlash (
     mVariableModuleGlobal->VariableGlobal.HobVariableBase = 0;\r
     for ( Variable = GetStartPointer (VariableStoreHeader)\r
         ; IsValidVariableHeader (Variable, GetEndPointer (VariableStoreHeader))\r
-        ; Variable = GetNextVariablePtr (Variable)\r
+        ; Variable = GetNextVariablePtr (Variable, AuthFormat)\r
         ) {\r
       if (Variable->State != VAR_ADDED) {\r
         //\r
@@ -3389,22 +3464,33 @@ FlushHobVariableToFlash (
       }\r
       ASSERT ((Variable->Attributes & EFI_VARIABLE_NON_VOLATILE) != 0);\r
       if (VendorGuid == NULL || VariableName == NULL ||\r
-          !CompareGuid (VendorGuid, GetVendorGuidPtr (Variable)) ||\r
-          StrCmp (VariableName, GetVariableNamePtr (Variable)) != 0) {\r
-        VariableData = GetVariableDataPtr (Variable);\r
-        FindVariable (GetVariableNamePtr (Variable), GetVendorGuidPtr (Variable), &VariablePtrTrack, &mVariableModuleGlobal->VariableGlobal, FALSE);\r
+          !CompareGuid (VendorGuid, GetVendorGuidPtr (Variable, AuthFormat)) ||\r
+          StrCmp (VariableName, GetVariableNamePtr (Variable, AuthFormat)) != 0) {\r
+        VariableData = GetVariableDataPtr (Variable, AuthFormat);\r
+        FindVariable (\r
+          GetVariableNamePtr (Variable, AuthFormat),\r
+          GetVendorGuidPtr (Variable, AuthFormat),\r
+          &VariablePtrTrack,\r
+          &mVariableModuleGlobal->VariableGlobal, FALSE\r
+          );\r
         Status = UpdateVariable (\r
-                   GetVariableNamePtr (Variable),\r
-                   GetVendorGuidPtr (Variable),\r
+                   GetVariableNamePtr (Variable, AuthFormat),\r
+                   GetVendorGuidPtr (Variable, AuthFormat),\r
                    VariableData,\r
-                   DataSizeOfVariable (Variable),\r
+                   DataSizeOfVariable (Variable, AuthFormat),\r
                    Variable->Attributes,\r
                    0,\r
                    0,\r
                    &VariablePtrTrack,\r
                    NULL\r
                  );\r
-        DEBUG ((EFI_D_INFO, "Variable driver flush the HOB variable to flash: %g %s %r\n", GetVendorGuidPtr (Variable), GetVariableNamePtr (Variable), Status));\r
+        DEBUG ((\r
+          DEBUG_INFO,\r
+          "Variable driver flush the HOB variable to flash: %g %s %r\n",\r
+          GetVendorGuidPtr (Variable, AuthFormat),\r
+          GetVariableNamePtr (Variable, AuthFormat),\r
+          Status\r
+          ));\r
       } else {\r
         //\r
         // The updated or deleted variable is matched with this HOB variable.\r
@@ -3418,7 +3504,12 @@ FlushHobVariableToFlash (
         // If set variable successful, or the updated or deleted variable is matched with the HOB variable,\r
         // set the HOB variable to DELETED state in local.\r
         //\r
-        DEBUG ((EFI_D_INFO, "Variable driver set the HOB variable to DELETED state in local: %g %s\n", GetVendorGuidPtr (Variable), GetVariableNamePtr (Variable)));\r
+        DEBUG ((\r
+          DEBUG_INFO,\r
+          "Variable driver set the HOB variable to DELETED state in local: %g %s\n",\r
+          GetVendorGuidPtr (Variable, AuthFormat),\r
+          GetVariableNamePtr (Variable, AuthFormat)\r
+          ));\r
         Variable->State &= VAR_DELETED;\r
       } else {\r
         ErrorFlag = TRUE;\r
@@ -3495,7 +3586,8 @@ VariableWriteServiceInitialize (
     // Authenticated variable initialize.\r
     //\r
     mAuthContextIn.StructSize = sizeof (AUTH_VAR_LIB_CONTEXT_IN);\r
-    mAuthContextIn.MaxAuthVariableSize = mVariableModuleGlobal->MaxAuthVariableSize - GetVariableHeaderSize ();\r
+    mAuthContextIn.MaxAuthVariableSize =  mVariableModuleGlobal->MaxAuthVariableSize -\r
+                                            GetVariableHeaderSize (mVariableModuleGlobal->VariableGlobal.AuthFormat);\r
     Status = AuthVariableLibInitialize (&mAuthContextIn, &mAuthContextOut);\r
     if (!EFI_ERROR (Status)) {\r
       DEBUG ((EFI_D_INFO, "Variable driver will work with auth variable support!\n"));\r
@@ -3574,7 +3666,7 @@ ConvertNormalVarStorageToAuthVarStorage (
       AuthVarStroageSize += StartPtr->NameSize + GET_PAD_SIZE (StartPtr->NameSize);\r
       AuthVarStroageSize += StartPtr->DataSize + GET_PAD_SIZE (StartPtr->DataSize);\r
     }\r
-    StartPtr  = GetNextVariablePtr (StartPtr);\r
+    StartPtr  = GetNextVariablePtr (StartPtr, mVariableModuleGlobal->VariableGlobal.AuthFormat);\r
   }\r
 \r
   //\r
@@ -3608,18 +3700,22 @@ ConvertNormalVarStorageToAuthVarStorage (
       // Copy Variable Name\r
       //\r
       NextPtr = (UINT8 *) (AuthStartPtr + 1);\r
-      CopyMem (NextPtr, GetVariableNamePtr (StartPtr), AuthStartPtr->NameSize);\r
+      CopyMem (\r
+        NextPtr,\r
+        GetVariableNamePtr (StartPtr, mVariableModuleGlobal->VariableGlobal.AuthFormat),\r
+        AuthStartPtr->NameSize\r
+        );\r
       //\r
       // Copy Variable Data\r
       //\r
       NextPtr = NextPtr + AuthStartPtr->NameSize + GET_PAD_SIZE (AuthStartPtr->NameSize);\r
-      CopyMem (NextPtr, GetVariableDataPtr (StartPtr), AuthStartPtr->DataSize);\r
+      CopyMem (NextPtr, GetVariableDataPtr (StartPtr, mVariableModuleGlobal->VariableGlobal.AuthFormat), AuthStartPtr->DataSize);\r
       //\r
       // Go to next variable\r
       //\r
       AuthStartPtr = (AUTHENTICATED_VARIABLE_HEADER *) (NextPtr + AuthStartPtr->DataSize + GET_PAD_SIZE (AuthStartPtr->DataSize));\r
     }\r
-    StartPtr = GetNextVariablePtr (StartPtr);\r
+    StartPtr = GetNextVariablePtr (StartPtr, mVariableModuleGlobal->VariableGlobal.AuthFormat);\r
   }\r
   //\r
   // Update Auth Storage Header\r
index c787ddba5bbf7b1216a8f295cb14f9813eae1afd..e865a089d172ce805303666c572bce4bc0436d4a 100644 (file)
@@ -56,8 +56,8 @@ VariableExLibFindVariable (
     return Status;\r
   }\r
 \r
-  AuthVariableInfo->DataSize        = DataSizeOfVariable (Variable.CurrPtr);\r
-  AuthVariableInfo->Data            = GetVariableDataPtr (Variable.CurrPtr);\r
+  AuthVariableInfo->DataSize        = DataSizeOfVariable (Variable.CurrPtr, mVariableModuleGlobal->VariableGlobal.AuthFormat);\r
+  AuthVariableInfo->Data            = GetVariableDataPtr (Variable.CurrPtr, mVariableModuleGlobal->VariableGlobal.AuthFormat);\r
   AuthVariableInfo->Attributes      = Variable.CurrPtr->Attributes;\r
   if (mVariableModuleGlobal->VariableGlobal.AuthFormat) {\r
     AuthVariable = (AUTHENTICATED_VARIABLE_HEADER *) Variable.CurrPtr;\r
@@ -108,7 +108,8 @@ VariableExLibFindNextVariable (
              VariableName,\r
              VendorGuid,\r
              VariableStoreHeader,\r
-             &VariablePtr\r
+             &VariablePtr,\r
+             mVariableModuleGlobal->VariableGlobal.AuthFormat\r
              );\r
   if (EFI_ERROR (Status)) {\r
     AuthVariableInfo->VariableName = NULL;\r
@@ -122,10 +123,10 @@ VariableExLibFindNextVariable (
     return Status;\r
   }\r
 \r
-  AuthVariableInfo->VariableName    = GetVariableNamePtr (VariablePtr);\r
-  AuthVariableInfo->VendorGuid      = GetVendorGuidPtr (VariablePtr);\r
-  AuthVariableInfo->DataSize        = DataSizeOfVariable (VariablePtr);\r
-  AuthVariableInfo->Data            = GetVariableDataPtr (VariablePtr);\r
+  AuthVariableInfo->VariableName    = GetVariableNamePtr (VariablePtr, mVariableModuleGlobal->VariableGlobal.AuthFormat);\r
+  AuthVariableInfo->VendorGuid      = GetVendorGuidPtr (VariablePtr, mVariableModuleGlobal->VariableGlobal.AuthFormat);\r
+  AuthVariableInfo->DataSize        = DataSizeOfVariable (VariablePtr, mVariableModuleGlobal->VariableGlobal.AuthFormat);\r
+  AuthVariableInfo->Data            = GetVariableDataPtr (VariablePtr, mVariableModuleGlobal->VariableGlobal.AuthFormat);\r
   AuthVariableInfo->Attributes      = VariablePtr->Attributes;\r
   if (mVariableModuleGlobal->VariableGlobal.AuthFormat) {\r
     AuthVariablePtr = (AUTHENTICATED_VARIABLE_HEADER *) VariablePtr;\r
index 870c9e3742c8cb35a94a8369ba1d45ce3277508e..d458f1c608f1e978a1dbf361246a52ce83829554 100644 (file)
@@ -78,17 +78,20 @@ GetVariableStoreStatus (
 /**\r
   This code gets the size of variable header.\r
 \r
+  @param[in]  AuthFormat    TRUE indicates authenticated variables are used.\r
+                            FALSE indicates authenticated variables are not used.\r
+\r
   @return Size of variable header in bytes in type UINTN.\r
 \r
 **/\r
 UINTN\r
 GetVariableHeaderSize (\r
-  VOID\r
+  IN  BOOLEAN   AuthFormat\r
   )\r
 {\r
   UINTN Value;\r
 \r
-  if (mVariableModuleGlobal->VariableGlobal.AuthFormat) {\r
+  if (AuthFormat) {\r
     Value = sizeof (AUTHENTICATED_VARIABLE_HEADER);\r
   } else {\r
     Value = sizeof (VARIABLE_HEADER);\r
@@ -101,20 +104,23 @@ GetVariableHeaderSize (
 \r
   This code gets the size of name of variable.\r
 \r
-  @param Variable        Pointer to the Variable Header.\r
+  @param[in]  Variable      Pointer to the variable header.\r
+  @param[in]  AuthFormat    TRUE indicates authenticated variables are used.\r
+                            FALSE indicates authenticated variables are not used.\r
 \r
   @return UINTN          Size of variable in bytes.\r
 \r
 **/\r
 UINTN\r
 NameSizeOfVariable (\r
-  IN  VARIABLE_HEADER   *Variable\r
+  IN  VARIABLE_HEADER   *Variable,\r
+  IN  BOOLEAN           AuthFormat\r
   )\r
 {\r
   AUTHENTICATED_VARIABLE_HEADER *AuthVariable;\r
 \r
   AuthVariable = (AUTHENTICATED_VARIABLE_HEADER *) Variable;\r
-  if (mVariableModuleGlobal->VariableGlobal.AuthFormat) {\r
+  if (AuthFormat) {\r
     if (AuthVariable->State == (UINT8) (-1) ||\r
        AuthVariable->DataSize == (UINT32) (-1) ||\r
        AuthVariable->NameSize == (UINT32) (-1) ||\r
@@ -136,20 +142,23 @@ NameSizeOfVariable (
 /**\r
   This code sets the size of name of variable.\r
 \r
-  @param[in] Variable   Pointer to the Variable Header.\r
-  @param[in] NameSize   Name size to set.\r
+  @param[in]  Variable      Pointer to the Variable Header.\r
+  @param[in]  NameSize      Name size to set.\r
+  @param[in]  AuthFormat    TRUE indicates authenticated variables are used.\r
+                            FALSE indicates authenticated variables are not used.\r
 \r
 **/\r
 VOID\r
 SetNameSizeOfVariable (\r
   IN VARIABLE_HEADER    *Variable,\r
-  IN UINTN              NameSize\r
+  IN UINTN              NameSize,\r
+  IN BOOLEAN            AuthFormat\r
   )\r
 {\r
   AUTHENTICATED_VARIABLE_HEADER *AuthVariable;\r
 \r
   AuthVariable = (AUTHENTICATED_VARIABLE_HEADER *) Variable;\r
-  if (mVariableModuleGlobal->VariableGlobal.AuthFormat) {\r
+  if (AuthFormat) {\r
     AuthVariable->NameSize = (UINT32) NameSize;\r
   } else {\r
     Variable->NameSize = (UINT32) NameSize;\r
@@ -160,20 +169,23 @@ SetNameSizeOfVariable (
 \r
   This code gets the size of variable data.\r
 \r
-  @param Variable        Pointer to the Variable Header.\r
+  @param[in]  Variable      Pointer to the Variable Header.\r
+  @param[in]  AuthFormat    TRUE indicates authenticated variables are used.\r
+                            FALSE indicates authenticated variables are not used.\r
 \r
   @return Size of variable in bytes.\r
 \r
 **/\r
 UINTN\r
 DataSizeOfVariable (\r
-  IN  VARIABLE_HEADER   *Variable\r
+  IN  VARIABLE_HEADER   *Variable,\r
+  IN  BOOLEAN           AuthFormat\r
   )\r
 {\r
   AUTHENTICATED_VARIABLE_HEADER *AuthVariable;\r
 \r
   AuthVariable = (AUTHENTICATED_VARIABLE_HEADER *) Variable;\r
-  if (mVariableModuleGlobal->VariableGlobal.AuthFormat) {\r
+  if (AuthFormat) {\r
     if (AuthVariable->State == (UINT8) (-1) ||\r
        AuthVariable->DataSize == (UINT32) (-1) ||\r
        AuthVariable->NameSize == (UINT32) (-1) ||\r
@@ -197,18 +209,21 @@ DataSizeOfVariable (
 \r
   @param[in] Variable   Pointer to the Variable Header.\r
   @param[in] DataSize   Data size to set.\r
+  @param[in] AuthFormat TRUE indicates authenticated variables are used.\r
+                        FALSE indicates authenticated variables are not used.\r
 \r
 **/\r
 VOID\r
 SetDataSizeOfVariable (\r
-  IN VARIABLE_HEADER    *Variable,\r
-  IN UINTN              DataSize\r
+  IN  VARIABLE_HEADER   *Variable,\r
+  IN  UINTN             DataSize,\r
+  IN  BOOLEAN           AuthFormat\r
   )\r
 {\r
   AUTHENTICATED_VARIABLE_HEADER *AuthVariable;\r
 \r
   AuthVariable = (AUTHENTICATED_VARIABLE_HEADER *) Variable;\r
-  if (mVariableModuleGlobal->VariableGlobal.AuthFormat) {\r
+  if (AuthFormat) {\r
     AuthVariable->DataSize = (UINT32) DataSize;\r
   } else {\r
     Variable->DataSize = (UINT32) DataSize;\r
@@ -219,36 +234,42 @@ SetDataSizeOfVariable (
 \r
   This code gets the pointer to the variable name.\r
 \r
-  @param Variable        Pointer to the Variable Header.\r
+  @param[in] Variable     Pointer to the Variable Header.\r
+  @param[in] AuthFormat   TRUE indicates authenticated variables are used.\r
+                          FALSE indicates authenticated variables are not used.\r
 \r
   @return Pointer to Variable Name which is Unicode encoding.\r
 \r
 **/\r
 CHAR16 *\r
 GetVariableNamePtr (\r
-  IN  VARIABLE_HEADER   *Variable\r
+  IN  VARIABLE_HEADER   *Variable,\r
+  IN  BOOLEAN           AuthFormat\r
   )\r
 {\r
-  return (CHAR16 *) ((UINTN) Variable + GetVariableHeaderSize ());\r
+  return (CHAR16 *) ((UINTN) Variable + GetVariableHeaderSize (AuthFormat));\r
 }\r
 \r
 /**\r
   This code gets the pointer to the variable guid.\r
 \r
-  @param Variable   Pointer to the Variable Header.\r
+  @param[in] Variable     Pointer to the Variable Header.\r
+  @param[in] AuthFormat   TRUE indicates authenticated variables are used.\r
+                          FALSE indicates authenticated variables are not used.\r
 \r
   @return A EFI_GUID* pointer to Vendor Guid.\r
 \r
 **/\r
 EFI_GUID *\r
 GetVendorGuidPtr (\r
-  IN VARIABLE_HEADER    *Variable\r
+  IN  VARIABLE_HEADER    *Variable,\r
+  IN  BOOLEAN            AuthFormat\r
   )\r
 {\r
   AUTHENTICATED_VARIABLE_HEADER *AuthVariable;\r
 \r
   AuthVariable = (AUTHENTICATED_VARIABLE_HEADER *) Variable;\r
-  if (mVariableModuleGlobal->VariableGlobal.AuthFormat) {\r
+  if (AuthFormat) {\r
     return &AuthVariable->VendorGuid;\r
   } else {\r
     return &Variable->VendorGuid;\r
@@ -259,14 +280,17 @@ GetVendorGuidPtr (
 \r
   This code gets the pointer to the variable data.\r
 \r
-  @param Variable        Pointer to the Variable Header.\r
+  @param[in] Variable     Pointer to the Variable Header.\r
+  @param[in] AuthFormat   TRUE indicates authenticated variables are used.\r
+                          FALSE indicates authenticated variables are not used.\r
 \r
   @return Pointer to Variable Data.\r
 \r
 **/\r
 UINT8 *\r
 GetVariableDataPtr (\r
-  IN  VARIABLE_HEADER   *Variable\r
+  IN  VARIABLE_HEADER    *Variable,\r
+  IN  BOOLEAN            AuthFormat\r
   )\r
 {\r
   UINTN Value;\r
@@ -274,9 +298,9 @@ GetVariableDataPtr (
   //\r
   // Be careful about pad size for alignment.\r
   //\r
-  Value =  (UINTN) GetVariableNamePtr (Variable);\r
-  Value += NameSizeOfVariable (Variable);\r
-  Value += GET_PAD_SIZE (NameSizeOfVariable (Variable));\r
+  Value =  (UINTN) GetVariableNamePtr (Variable, AuthFormat);\r
+  Value += NameSizeOfVariable (Variable, AuthFormat);\r
+  Value += GET_PAD_SIZE (NameSizeOfVariable (Variable, AuthFormat));\r
 \r
   return (UINT8 *) Value;\r
 }\r
@@ -284,14 +308,17 @@ GetVariableDataPtr (
 /**\r
   This code gets the variable data offset related to variable header.\r
 \r
-  @param Variable        Pointer to the Variable Header.\r
+  @param[in] Variable     Pointer to the Variable Header.\r
+  @param[in] AuthFormat   TRUE indicates authenticated variables are used.\r
+                          FALSE indicates authenticated variables are not used.\r
 \r
   @return Variable Data offset.\r
 \r
 **/\r
 UINTN\r
 GetVariableDataOffset (\r
-  IN  VARIABLE_HEADER   *Variable\r
+  IN  VARIABLE_HEADER   *Variable,\r
+  IN  BOOLEAN           AuthFormat\r
   )\r
 {\r
   UINTN Value;\r
@@ -299,9 +326,9 @@ GetVariableDataOffset (
   //\r
   // Be careful about pad size for alignment\r
   //\r
-  Value = GetVariableHeaderSize ();\r
-  Value += NameSizeOfVariable (Variable);\r
-  Value += GET_PAD_SIZE (NameSizeOfVariable (Variable));\r
+  Value = GetVariableHeaderSize (AuthFormat);\r
+  Value += NameSizeOfVariable (Variable, AuthFormat);\r
+  Value += GET_PAD_SIZE (NameSizeOfVariable (Variable, AuthFormat));\r
 \r
   return Value;\r
 }\r
@@ -310,21 +337,24 @@ GetVariableDataOffset (
 \r
   This code gets the pointer to the next variable header.\r
 \r
-  @param Variable        Pointer to the Variable Header.\r
+  @param[in] Variable     Pointer to the Variable Header.\r
+  @param[in] AuthFormat   TRUE indicates authenticated variables are used.\r
+                          FALSE indicates authenticated variables are not used.\r
 \r
   @return Pointer to next variable header.\r
 \r
 **/\r
 VARIABLE_HEADER *\r
 GetNextVariablePtr (\r
-  IN  VARIABLE_HEADER   *Variable\r
+  IN  VARIABLE_HEADER   *Variable,\r
+  IN  BOOLEAN           AuthFormat\r
   )\r
 {\r
   UINTN Value;\r
 \r
-  Value =  (UINTN) GetVariableDataPtr (Variable);\r
-  Value += DataSizeOfVariable (Variable);\r
-  Value += GET_PAD_SIZE (DataSizeOfVariable (Variable));\r
+  Value =  (UINTN) GetVariableDataPtr (Variable, AuthFormat);\r
+  Value += DataSizeOfVariable (Variable, AuthFormat);\r
+  Value += GET_PAD_SIZE (DataSizeOfVariable (Variable, AuthFormat));\r
 \r
   //\r
   // Be careful about pad size for alignment.\r
@@ -415,6 +445,8 @@ VariableCompareTimeStampInternal (
   @param[in]       IgnoreRtCheck       Ignore EFI_VARIABLE_RUNTIME_ACCESS attribute\r
                                        check at runtime when searching variable.\r
   @param[in, out]  PtrTrack            Variable Track Pointer structure that contains Variable Information.\r
+  @param[in]       AuthFormat          TRUE indicates authenticated variables are used.\r
+                                       FALSE indicates authenticated variables are not used.\r
 \r
   @retval          EFI_SUCCESS         Variable found successfully\r
   @retval          EFI_NOT_FOUND       Variable not found\r
@@ -424,7 +456,8 @@ FindVariableEx (
   IN     CHAR16                  *VariableName,\r
   IN     EFI_GUID                *VendorGuid,\r
   IN     BOOLEAN                 IgnoreRtCheck,\r
-  IN OUT VARIABLE_POINTER_TRACK  *PtrTrack\r
+  IN OUT VARIABLE_POINTER_TRACK  *PtrTrack,\r
+  IN     BOOLEAN                 AuthFormat\r
   )\r
 {\r
   VARIABLE_HEADER                *InDeletedVariable;\r
@@ -439,7 +472,7 @@ FindVariableEx (
 \r
   for ( PtrTrack->CurrPtr = PtrTrack->StartPtr\r
       ; IsValidVariableHeader (PtrTrack->CurrPtr, PtrTrack->EndPtr)\r
-      ; PtrTrack->CurrPtr = GetNextVariablePtr (PtrTrack->CurrPtr)\r
+      ; PtrTrack->CurrPtr = GetNextVariablePtr (PtrTrack->CurrPtr, AuthFormat)\r
       ) {\r
     if (PtrTrack->CurrPtr->State == VAR_ADDED ||\r
         PtrTrack->CurrPtr->State == (VAR_IN_DELETED_TRANSITION & VAR_ADDED)\r
@@ -453,11 +486,11 @@ FindVariableEx (
             return EFI_SUCCESS;\r
           }\r
         } else {\r
-          if (CompareGuid (VendorGuid, GetVendorGuidPtr (PtrTrack->CurrPtr))) {\r
-            Point = (VOID *) GetVariableNamePtr (PtrTrack->CurrPtr);\r
+          if (CompareGuid (VendorGuid, GetVendorGuidPtr (PtrTrack->CurrPtr, AuthFormat))) {\r
+            Point = (VOID *) GetVariableNamePtr (PtrTrack->CurrPtr, AuthFormat);\r
 \r
-            ASSERT (NameSizeOfVariable (PtrTrack->CurrPtr) != 0);\r
-            if (CompareMem (VariableName, Point, NameSizeOfVariable (PtrTrack->CurrPtr)) == 0) {\r
+            ASSERT (NameSizeOfVariable (PtrTrack->CurrPtr, AuthFormat) != 0);\r
+            if (CompareMem (VariableName, Point, NameSizeOfVariable (PtrTrack->CurrPtr, AuthFormat)) == 0) {\r
               if (PtrTrack->CurrPtr->State == (VAR_IN_DELETED_TRANSITION & VAR_ADDED)) {\r
                 InDeletedVariable     = PtrTrack->CurrPtr;\r
               } else {\r
@@ -486,6 +519,8 @@ FindVariableEx (
   @param[in]  VariableStoreList A list of variable stores that should be used to get the next variable.\r
                                 The maximum number of entries is the max value of VARIABLE_STORE_TYPE.\r
   @param[out] VariablePtr       Pointer to variable header address.\r
+  @param[in]  AuthFormat        TRUE indicates authenticated variables are used.\r
+                                FALSE indicates authenticated variables are not used.\r
 \r
   @retval EFI_SUCCESS           The function completed successfully.\r
   @retval EFI_NOT_FOUND         The next variable was not found.\r
@@ -500,7 +535,8 @@ VariableServiceGetNextVariableInternal (
   IN  CHAR16                *VariableName,\r
   IN  EFI_GUID              *VendorGuid,\r
   IN  VARIABLE_STORE_HEADER **VariableStoreList,\r
-  OUT VARIABLE_HEADER       **VariablePtr\r
+  OUT VARIABLE_HEADER       **VariablePtr,\r
+  IN  BOOLEAN               AuthFormat\r
   )\r
 {\r
   EFI_STATUS              Status;\r
@@ -525,7 +561,7 @@ VariableServiceGetNextVariableInternal (
     Variable.EndPtr   = GetEndPointer   (VariableStoreList[StoreType]);\r
     Variable.Volatile = (BOOLEAN) (StoreType == VariableStoreTypeVolatile);\r
 \r
-    Status = FindVariableEx (VariableName, VendorGuid, FALSE, &Variable);\r
+    Status = FindVariableEx (VariableName, VendorGuid, FALSE, &Variable, AuthFormat);\r
     if (!EFI_ERROR (Status)) {\r
       break;\r
     }\r
@@ -552,7 +588,7 @@ VariableServiceGetNextVariableInternal (
     //\r
     // If variable name is not empty, get next variable.\r
     //\r
-    Variable.CurrPtr = GetNextVariablePtr (Variable.CurrPtr);\r
+    Variable.CurrPtr = GetNextVariablePtr (Variable.CurrPtr, AuthFormat);\r
   }\r
 \r
   while (TRUE) {\r
@@ -605,13 +641,14 @@ VariableServiceGetNextVariableInternal (
           VariablePtrTrack.StartPtr = Variable.StartPtr;\r
           VariablePtrTrack.EndPtr = Variable.EndPtr;\r
           Status = FindVariableEx (\r
-                     GetVariableNamePtr (Variable.CurrPtr),\r
-                     GetVendorGuidPtr (Variable.CurrPtr),\r
+                     GetVariableNamePtr (Variable.CurrPtr, AuthFormat),\r
+                     GetVendorGuidPtr (Variable.CurrPtr, AuthFormat),\r
                      FALSE,\r
-                     &VariablePtrTrack\r
+                     &VariablePtrTrack,\r
+                     AuthFormat\r
                      );\r
           if (!EFI_ERROR (Status) && VariablePtrTrack.CurrPtr->State == VAR_ADDED) {\r
-            Variable.CurrPtr = GetNextVariablePtr (Variable.CurrPtr);\r
+            Variable.CurrPtr = GetNextVariablePtr (Variable.CurrPtr, AuthFormat);\r
             continue;\r
           }\r
         }\r
@@ -625,13 +662,14 @@ VariableServiceGetNextVariableInternal (
           VariableInHob.StartPtr = GetStartPointer (VariableStoreList[VariableStoreTypeHob]);\r
           VariableInHob.EndPtr   = GetEndPointer   (VariableStoreList[VariableStoreTypeHob]);\r
           Status = FindVariableEx (\r
-                     GetVariableNamePtr (Variable.CurrPtr),\r
-                     GetVendorGuidPtr (Variable.CurrPtr),\r
+                     GetVariableNamePtr (Variable.CurrPtr, AuthFormat),\r
+                     GetVendorGuidPtr (Variable.CurrPtr, AuthFormat),\r
                      FALSE,\r
-                     &VariableInHob\r
+                     &VariableInHob,\r
+                     AuthFormat\r
                      );\r
           if (!EFI_ERROR (Status)) {\r
-            Variable.CurrPtr = GetNextVariablePtr (Variable.CurrPtr);\r
+            Variable.CurrPtr = GetNextVariablePtr (Variable.CurrPtr, AuthFormat);\r
             continue;\r
           }\r
         }\r
@@ -642,7 +680,7 @@ VariableServiceGetNextVariableInternal (
       }\r
     }\r
 \r
-    Variable.CurrPtr = GetNextVariablePtr (Variable.CurrPtr);\r
+    Variable.CurrPtr = GetNextVariablePtr (Variable.CurrPtr, AuthFormat);\r
   }\r
 \r
 Done:\r
index 1777ce0e6986ebbd4291428a8437741874ac1613..92a729d1408bc1d8edd62a2f11ce96fa84dc9c04 100644 (file)
@@ -49,53 +49,65 @@ GetVariableStoreStatus (
 /**\r
   This code gets the size of variable header.\r
 \r
+  @param[in]  AuthFormat    TRUE indicates authenticated variables are used.\r
+                            FALSE indicates authenticated variables are not used.\r
+\r
   @return Size of variable header in bytes in type UINTN.\r
 \r
 **/\r
 UINTN\r
 GetVariableHeaderSize (\r
-  VOID\r
+  IN  BOOLEAN   AuthFormat\r
   );\r
 \r
 /**\r
 \r
   This code gets the size of name of variable.\r
 \r
-  @param Variable        Pointer to the Variable Header.\r
+  @param[in]  Variable      Pointer to the variable header.\r
+  @param[in]  AuthFormat    TRUE indicates authenticated variables are used.\r
+                            FALSE indicates authenticated variables are not used.\r
 \r
   @return UINTN          Size of variable in bytes.\r
 \r
 **/\r
 UINTN\r
 NameSizeOfVariable (\r
-  IN  VARIABLE_HEADER   *Variable\r
+  IN  VARIABLE_HEADER   *Variable,\r
+  IN  BOOLEAN           AuthFormat\r
   );\r
 \r
 /**\r
   This code sets the size of name of variable.\r
 \r
-  @param[in] Variable   Pointer to the Variable Header.\r
-  @param[in] NameSize   Name size to set.\r
+  @param[in]  Variable      Pointer to the Variable Header.\r
+  @param[in]  NameSize      Name size to set.\r
+  @param[in]  AuthFormat    TRUE indicates authenticated variables are used.\r
+                            FALSE indicates authenticated variables are not used.\r
 \r
 **/\r
 VOID\r
 SetNameSizeOfVariable (\r
   IN VARIABLE_HEADER    *Variable,\r
-  IN UINTN              NameSize\r
+  IN UINTN              NameSize,\r
+  IN BOOLEAN            AuthFormat\r
   );\r
 \r
 /**\r
 \r
   This code gets the size of variable data.\r
 \r
-  @param Variable        Pointer to the Variable Header.\r
+  @param[in]  Variable      Pointer to the Variable Header.\r
+  @param[in]  AuthFormat    TRUE indicates authenticated variables are used.\r
+                            FALSE indicates authenticated variables are not used.\r
 \r
   @return Size of variable in bytes.\r
 \r
 **/\r
 UINTN\r
 DataSizeOfVariable (\r
-  IN  VARIABLE_HEADER   *Variable\r
+  IN  VARIABLE_HEADER   *Variable,\r
+  IN  BOOLEAN           AuthFormat\r
   );\r
 \r
 /**\r
@@ -103,80 +115,98 @@ DataSizeOfVariable (
 \r
   @param[in] Variable   Pointer to the Variable Header.\r
   @param[in] DataSize   Data size to set.\r
+  @param[in] AuthFormat TRUE indicates authenticated variables are used.\r
+                        FALSE indicates authenticated variables are not used.\r
 \r
 **/\r
 VOID\r
 SetDataSizeOfVariable (\r
-  IN VARIABLE_HEADER    *Variable,\r
-  IN UINTN              DataSize\r
+  IN  VARIABLE_HEADER   *Variable,\r
+  IN  UINTN             DataSize,\r
+  IN  BOOLEAN           AuthFormat\r
   );\r
 \r
 /**\r
 \r
   This code gets the pointer to the variable name.\r
 \r
-  @param Variable        Pointer to the Variable Header.\r
+  @param[in] Variable     Pointer to the Variable Header.\r
+  @param[in] AuthFormat   TRUE indicates authenticated variables are used.\r
+                          FALSE indicates authenticated variables are not used.\r
 \r
   @return Pointer to Variable Name which is Unicode encoding.\r
 \r
 **/\r
 CHAR16 *\r
 GetVariableNamePtr (\r
-  IN  VARIABLE_HEADER   *Variable\r
+  IN  VARIABLE_HEADER   *Variable,\r
+  IN  BOOLEAN           AuthFormat\r
   );\r
 \r
 /**\r
   This code gets the pointer to the variable guid.\r
 \r
-  @param Variable   Pointer to the Variable Header.\r
+  @param[in] Variable     Pointer to the Variable Header.\r
+  @param[in] AuthFormat   TRUE indicates authenticated variables are used.\r
+                          FALSE indicates authenticated variables are not used.\r
 \r
   @return A EFI_GUID* pointer to Vendor Guid.\r
 \r
 **/\r
 EFI_GUID *\r
 GetVendorGuidPtr (\r
-  IN VARIABLE_HEADER    *Variable\r
+  IN  VARIABLE_HEADER    *Variable,\r
+  IN  BOOLEAN            AuthFormat\r
   );\r
 \r
 /**\r
 \r
   This code gets the pointer to the variable data.\r
 \r
-  @param Variable        Pointer to the Variable Header.\r
+  @param[in] Variable     Pointer to the Variable Header.\r
+  @param[in] AuthFormat   TRUE indicates authenticated variables are used.\r
+                          FALSE indicates authenticated variables are not used.\r
 \r
   @return Pointer to Variable Data.\r
 \r
 **/\r
 UINT8 *\r
 GetVariableDataPtr (\r
-  IN  VARIABLE_HEADER   *Variable\r
+  IN  VARIABLE_HEADER    *Variable,\r
+  IN  BOOLEAN            AuthFormat\r
   );\r
 \r
 /**\r
   This code gets the variable data offset related to variable header.\r
 \r
-  @param Variable        Pointer to the Variable Header.\r
+  @param[in] Variable     Pointer to the Variable Header.\r
+  @param[in] AuthFormat   TRUE indicates authenticated variables are used.\r
+                          FALSE indicates authenticated variables are not used.\r
 \r
   @return Variable Data offset.\r
 \r
 **/\r
 UINTN\r
 GetVariableDataOffset (\r
-  IN  VARIABLE_HEADER   *Variable\r
+  IN  VARIABLE_HEADER   *Variable,\r
+  IN  BOOLEAN           AuthFormat\r
   );\r
 \r
 /**\r
 \r
   This code gets the pointer to the next variable header.\r
 \r
-  @param Variable        Pointer to the Variable Header.\r
+  @param[in] Variable     Pointer to the Variable Header.\r
+  @param[in] AuthFormat   TRUE indicates authenticated variables are used.\r
+                          FALSE indicates authenticated variables are not used.\r
 \r
   @return Pointer to next variable header.\r
 \r
 **/\r
 VARIABLE_HEADER *\r
 GetNextVariablePtr (\r
-  IN  VARIABLE_HEADER   *Variable\r
+  IN  VARIABLE_HEADER   *Variable,\r
+  IN  BOOLEAN           AuthFormat\r
   );\r
 \r
 /**\r
@@ -235,6 +265,8 @@ VariableCompareTimeStampInternal (
   @param[in]       IgnoreRtCheck       Ignore EFI_VARIABLE_RUNTIME_ACCESS attribute\r
                                        check at runtime when searching variable.\r
   @param[in, out]  PtrTrack            Variable Track Pointer structure that contains Variable Information.\r
+  @param[in]       AuthFormat          TRUE indicates authenticated variables are used.\r
+                                       FALSE indicates authenticated variables are not used.\r
 \r
   @retval          EFI_SUCCESS         Variable found successfully\r
   @retval          EFI_NOT_FOUND       Variable not found\r
@@ -244,7 +276,8 @@ FindVariableEx (
   IN     CHAR16                  *VariableName,\r
   IN     EFI_GUID                *VendorGuid,\r
   IN     BOOLEAN                 IgnoreRtCheck,\r
-  IN OUT VARIABLE_POINTER_TRACK  *PtrTrack\r
+  IN OUT VARIABLE_POINTER_TRACK  *PtrTrack,\r
+  IN     BOOLEAN                 AuthFormat\r
   );\r
 \r
 /**\r
@@ -258,10 +291,12 @@ FindVariableEx (
   @param[in]  VariableStoreList A list of variable stores that should be used to get the next variable.\r
                                 The maximum number of entries is the max value of VARIABLE_STORE_TYPE.\r
   @param[out] VariablePtr       Pointer to variable header address.\r
+  @param[in]  AuthFormat        TRUE indicates authenticated variables are used.\r
+                                FALSE indicates authenticated variables are not used.\r
 \r
   @retval EFI_SUCCESS           The function completed successfully.\r
   @retval EFI_NOT_FOUND         The next variable was not found.\r
-  @retval EFI_INVALID_PARAMETER If VariableName is nt an empty string, while VendorGuid is NULL.\r
+  @retval EFI_INVALID_PARAMETER If VariableName is not an empty string, while VendorGuid is NULL.\r
   @retval EFI_INVALID_PARAMETER The input values of VariableName and VendorGuid are not a name and\r
                                 GUID of an existing variable.\r
 \r
@@ -272,7 +307,8 @@ VariableServiceGetNextVariableInternal (
   IN  CHAR16                *VariableName,\r
   IN  EFI_GUID              *VendorGuid,\r
   IN  VARIABLE_STORE_HEADER **VariableStoreList,\r
-  OUT VARIABLE_HEADER       **VariablePtr\r
+  OUT VARIABLE_HEADER       **VariablePtr,\r
+  IN  BOOLEAN               AuthFormat\r
   );\r
 \r
 /**\r
index ce409f22a3efd3213a1d2b6cf3df1bbe765da56c..5e24bc4a6242f2773fd1e2f634298da53e97b0e5 100644 (file)
@@ -975,8 +975,9 @@ MmVariableServiceInitialize (
                     );\r
   ASSERT_EFI_ERROR (Status);\r
 \r
-  mVariableBufferPayloadSize = GetMaxVariableSize () +\r
-                               OFFSET_OF (SMM_VARIABLE_COMMUNICATE_VAR_CHECK_VARIABLE_PROPERTY, Name) - GetVariableHeaderSize ();\r
+  mVariableBufferPayloadSize =  GetMaxVariableSize () +\r
+                                  OFFSET_OF (SMM_VARIABLE_COMMUNICATE_VAR_CHECK_VARIABLE_PROPERTY, Name) -\r
+                                  GetVariableHeaderSize (mVariableModuleGlobal->VariableGlobal.AuthFormat);\r
 \r
   Status = gMmst->MmAllocatePool (\r
                     EfiRuntimeServicesData,\r