]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Variable/RuntimeDxe/VariableParsing.c
MdeModulePkg/Variable: Parameterize auth status in VariableParsing
[mirror_edk2.git] / MdeModulePkg / Universal / Variable / RuntimeDxe / VariableParsing.c
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