/** @file\r
Implementation functions and structures for var check services.\r
\r
-Copyright (c) 2015, Intel Corporation. All rights reserved.<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
+Copyright (c) 2015 - 2021, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
#include <Guid/GlobalVariable.h>\r
#include <Guid/HardwareErrorVariable.h>\r
\r
-BOOLEAN mVarCheckLibEndOfDxe = FALSE;\r
+BOOLEAN mVarCheckLibEndOfDxe = FALSE;\r
\r
-#define VAR_CHECK_TABLE_SIZE 0x8\r
+#define VAR_CHECK_TABLE_SIZE 0x8\r
\r
-UINTN mVarCheckLibEndOfDxeCallbackCount = 0;\r
-UINTN mVarCheckLibEndOfDxeCallbackMaxCount = 0;\r
-VAR_CHECK_END_OF_DXE_CALLBACK *mVarCheckLibEndOfDxeCallback = NULL;\r
+UINTN mVarCheckLibEndOfDxeCallbackCount = 0;\r
+UINTN mVarCheckLibEndOfDxeCallbackMaxCount = 0;\r
+VAR_CHECK_END_OF_DXE_CALLBACK *mVarCheckLibEndOfDxeCallback = NULL;\r
\r
-UINTN mVarCheckLibAddressPointerCount = 0;\r
-UINTN mVarCheckLibAddressPointerMaxCount = 0;\r
-VOID ***mVarCheckLibAddressPointer = NULL;\r
+UINTN mVarCheckLibAddressPointerCount = 0;\r
+UINTN mVarCheckLibAddressPointerMaxCount = 0;\r
+VOID ***mVarCheckLibAddressPointer = NULL;\r
\r
-UINTN mNumberOfVarCheckHandler = 0;\r
-UINTN mMaxNumberOfVarCheckHandler = 0;\r
-VAR_CHECK_SET_VARIABLE_CHECK_HANDLER *mVarCheckHandlerTable = NULL;\r
+UINTN mNumberOfVarCheckHandler = 0;\r
+UINTN mMaxNumberOfVarCheckHandler = 0;\r
+VAR_CHECK_SET_VARIABLE_CHECK_HANDLER *mVarCheckHandlerTable = NULL;\r
\r
typedef struct {\r
- EFI_GUID Guid;\r
- VAR_CHECK_VARIABLE_PROPERTY VariableProperty;\r
- //CHAR16 *Name;\r
+ EFI_GUID Guid;\r
+ VAR_CHECK_VARIABLE_PROPERTY VariableProperty;\r
+ // CHAR16 *Name;\r
} VAR_CHECK_VARIABLE_ENTRY;\r
\r
-UINTN mNumberOfVarCheckVariable = 0;\r
-UINTN mMaxNumberOfVarCheckVariable = 0;\r
-VARIABLE_ENTRY_PROPERTY **mVarCheckVariableTable = NULL;\r
+UINTN mNumberOfVarCheckVariable = 0;\r
+UINTN mMaxNumberOfVarCheckVariable = 0;\r
+VARIABLE_ENTRY_PROPERTY **mVarCheckVariableTable = NULL;\r
\r
//\r
// Handle variables with wildcard name specially.\r
//\r
-VARIABLE_ENTRY_PROPERTY mVarCheckVariableWithWildcardName[] = {\r
+VARIABLE_ENTRY_PROPERTY mVarCheckVariableWithWildcardName[] = {\r
{\r
&gEfiGlobalVariableGuid,\r
L"Boot####",\r
0\r
},\r
},\r
+ {\r
+ &gEfiGlobalVariableGuid,\r
+ L"PlatformRecovery####",\r
+ {\r
+ 0\r
+ },\r
+ },\r
{\r
&gEfiHardwareErrorVariableGuid,\r
L"HwErrRec####",\r
};\r
\r
/**\r
- Check if a Unicode character is a hexadecimal character.\r
+ Check if a Unicode character is an upper case hexadecimal character.\r
\r
- This function checks if a Unicode character is a\r
- hexadecimal character. The valid hexadecimal character is\r
- L'0' to L'9', L'a' to L'f', or L'A' to L'F'.\r
+ This function checks if a Unicode character is an upper case\r
+ hexadecimal character. The valid upper case hexadecimal character is\r
+ L'0' to L'9', or L'A' to L'F'.\r
\r
\r
@param[in] Char The character to check against.\r
\r
- @retval TRUE If the Char is a hexadecmial character.\r
- @retval FALSE If the Char is not a hexadecmial character.\r
+ @retval TRUE If the Char is an upper case hexadecmial character.\r
+ @retval FALSE If the Char is not an upper case hexadecmial character.\r
\r
**/\r
BOOLEAN\r
EFIAPI\r
VarCheckInternalIsHexaDecimalDigitCharacter (\r
- IN CHAR16 Char\r
+ IN CHAR16 Char\r
)\r
{\r
- return (BOOLEAN) ((Char >= L'0' && Char <= L'9') || (Char >= L'A' && Char <= L'F') || (Char >= L'a' && Char <= L'f'));\r
+ return (BOOLEAN)((Char >= L'0' && Char <= L'9') || (Char >= L'A' && Char <= L'F'));\r
}\r
\r
/**\r
**/\r
VAR_CHECK_VARIABLE_PROPERTY *\r
VariablePropertyGetWithWildcardName (\r
- IN CHAR16 *VariableName,\r
- IN EFI_GUID *VendorGuid,\r
- IN BOOLEAN WildcardMatch\r
+ IN CHAR16 *VariableName,\r
+ IN EFI_GUID *VendorGuid,\r
+ IN BOOLEAN WildcardMatch\r
)\r
{\r
- UINTN Index;\r
- UINTN NameLength;\r
+ UINTN Index;\r
+ UINTN NameLength;\r
\r
NameLength = StrLen (VariableName) - 4;\r
for (Index = 0; Index < sizeof (mVarCheckVariableWithWildcardName)/sizeof (mVarCheckVariableWithWildcardName[0]); Index++) {\r
- if (CompareGuid (mVarCheckVariableWithWildcardName[Index].Guid, VendorGuid)){\r
+ if (CompareGuid (mVarCheckVariableWithWildcardName[Index].Guid, VendorGuid)) {\r
if (WildcardMatch) {\r
if ((StrLen (VariableName) == StrLen (mVarCheckVariableWithWildcardName[Index].Name)) &&\r
(StrnCmp (VariableName, mVarCheckVariableWithWildcardName[Index].Name, NameLength) == 0) &&\r
VarCheckInternalIsHexaDecimalDigitCharacter (VariableName[NameLength]) &&\r
VarCheckInternalIsHexaDecimalDigitCharacter (VariableName[NameLength + 1]) &&\r
VarCheckInternalIsHexaDecimalDigitCharacter (VariableName[NameLength + 2]) &&\r
- VarCheckInternalIsHexaDecimalDigitCharacter (VariableName[NameLength + 3])) {\r
+ VarCheckInternalIsHexaDecimalDigitCharacter (VariableName[NameLength + 3]))\r
+ {\r
return &mVarCheckVariableWithWildcardName[Index].VariableProperty;\r
}\r
}\r
+\r
if (StrCmp (mVarCheckVariableWithWildcardName[Index].Name, VariableName) == 0) {\r
- return &mVarCheckVariableWithWildcardName[Index].VariableProperty;\r
+ return &mVarCheckVariableWithWildcardName[Index].VariableProperty;\r
}\r
}\r
}\r
**/\r
VAR_CHECK_VARIABLE_PROPERTY *\r
VariablePropertyGetFunction (\r
- IN CHAR16 *Name,\r
- IN EFI_GUID *Guid,\r
- IN BOOLEAN WildcardMatch\r
+ IN CHAR16 *Name,\r
+ IN EFI_GUID *Guid,\r
+ IN BOOLEAN WildcardMatch\r
)\r
{\r
UINTN Index;\r
CHAR16 *VariableName;\r
\r
for (Index = 0; Index < mNumberOfVarCheckVariable; Index++) {\r
- Entry = (VAR_CHECK_VARIABLE_ENTRY *) mVarCheckVariableTable[Index];\r
- VariableName = (CHAR16 *) ((UINTN) Entry + sizeof (*Entry));\r
+ Entry = (VAR_CHECK_VARIABLE_ENTRY *)mVarCheckVariableTable[Index];\r
+ VariableName = (CHAR16 *)((UINTN)Entry + sizeof (*Entry));\r
if (CompareGuid (&Entry->Guid, Guid) && (StrCmp (VariableName, Name) == 0)) {\r
return &Entry->VariableProperty;\r
}\r
**/\r
EFI_STATUS\r
VarCheckAddTableEntry (\r
- IN OUT UINTN **Table,\r
- IN OUT UINTN *MaxNumber,\r
- IN OUT UINTN *CurrentNumber,\r
- IN UINTN Entry\r
+ IN OUT UINTN **Table,\r
+ IN OUT UINTN *MaxNumber,\r
+ IN OUT UINTN *CurrentNumber,\r
+ IN UINTN Entry\r
)\r
{\r
- UINTN *TempTable;\r
+ UINTN *TempTable;\r
\r
//\r
// Check whether the table is enough to store new entry.\r
IN VAR_CHECK_END_OF_DXE_CALLBACK Callback\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
if (Callback == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
Status = VarCheckAddTableEntry (\r
- (UINTN **) &mVarCheckLibEndOfDxeCallback,\r
- &mVarCheckLibEndOfDxeCallbackMaxCount,\r
- &mVarCheckLibEndOfDxeCallbackCount,\r
- (UINTN) Callback\r
- );\r
+ (UINTN **)&mVarCheckLibEndOfDxeCallback,\r
+ &mVarCheckLibEndOfDxeCallbackMaxCount,\r
+ &mVarCheckLibEndOfDxeCallbackCount,\r
+ (UINTN)Callback\r
+ );\r
\r
- DEBUG ((EFI_D_INFO, "VarCheckLibRegisterEndOfDxeCallback - 0x%x %r\n", Callback, Status));\r
+ DEBUG ((DEBUG_INFO, "VarCheckLibRegisterEndOfDxeCallback - 0x%x %r\n", Callback, Status));\r
\r
return Status;\r
}\r
VOID ***\r
EFIAPI\r
VarCheckLibInitializeAtEndOfDxe (\r
- IN OUT UINTN *AddressPointerCount OPTIONAL\r
+ IN OUT UINTN *AddressPointerCount OPTIONAL\r
)\r
{\r
- VOID *TempTable;\r
- UINTN TotalCount;\r
- UINTN Index;\r
+ VOID *TempTable;\r
+ UINTN TotalCount;\r
+ UINTN Index;\r
\r
for (Index = 0; Index < mVarCheckLibEndOfDxeCallbackCount; Index++) {\r
//\r
// Invoke the callback registered by VarCheckLibRegisterEndOfDxeCallback().\r
//\r
- mVarCheckLibEndOfDxeCallback[Index] ();\r
+ mVarCheckLibEndOfDxeCallback[Index]();\r
}\r
+\r
if (mVarCheckLibEndOfDxeCallback != NULL) {\r
//\r
// Free the callback buffer.\r
//\r
- mVarCheckLibEndOfDxeCallbackCount = 0;\r
+ mVarCheckLibEndOfDxeCallbackCount = 0;\r
mVarCheckLibEndOfDxeCallbackMaxCount = 0;\r
- FreePool ((VOID *) mVarCheckLibEndOfDxeCallback);\r
+ FreePool ((VOID *)mVarCheckLibEndOfDxeCallback);\r
mVarCheckLibEndOfDxeCallback = NULL;\r
}\r
\r
//\r
// Free the address pointer buffer.\r
//\r
- mVarCheckLibAddressPointerCount = 0;\r
+ mVarCheckLibAddressPointerCount = 0;\r
mVarCheckLibAddressPointerMaxCount = 0;\r
- FreePool ((VOID *) mVarCheckLibAddressPointer);\r
+ FreePool ((VOID *)mVarCheckLibAddressPointer);\r
mVarCheckLibAddressPointer = NULL;\r
}\r
+\r
return NULL;\r
}\r
\r
// Also cover VarCheckHandler and the entries, and VarCheckVariable and the entries.\r
//\r
TotalCount = mVarCheckLibAddressPointerCount + (mNumberOfVarCheckHandler + 1) + (mNumberOfVarCheckVariable + 1);\r
- TempTable = ReallocateRuntimePool (\r
- mVarCheckLibAddressPointerMaxCount * sizeof (VOID **),\r
- TotalCount * sizeof (VOID **),\r
- (VOID *) mVarCheckLibAddressPointer\r
- );\r
+ TempTable = ReallocateRuntimePool (\r
+ mVarCheckLibAddressPointerMaxCount * sizeof (VOID **),\r
+ TotalCount * sizeof (VOID **),\r
+ (VOID *)mVarCheckLibAddressPointer\r
+ );\r
\r
if (TempTable != NULL) {\r
- mVarCheckLibAddressPointer = (VOID ***) TempTable;\r
+ mVarCheckLibAddressPointer = (VOID ***)TempTable;\r
\r
//\r
// Cover VarCheckHandler and the entries.\r
//\r
- mVarCheckLibAddressPointer[mVarCheckLibAddressPointerCount++] = (VOID **) &mVarCheckHandlerTable;\r
+ mVarCheckLibAddressPointer[mVarCheckLibAddressPointerCount++] = (VOID **)&mVarCheckHandlerTable;\r
for (Index = 0; Index < mNumberOfVarCheckHandler; Index++) {\r
- mVarCheckLibAddressPointer[mVarCheckLibAddressPointerCount++] = (VOID **) &mVarCheckHandlerTable[Index];\r
+ mVarCheckLibAddressPointer[mVarCheckLibAddressPointerCount++] = (VOID **)&mVarCheckHandlerTable[Index];\r
}\r
\r
//\r
// Cover VarCheckVariable and the entries.\r
//\r
- mVarCheckLibAddressPointer[mVarCheckLibAddressPointerCount++] = (VOID **) &mVarCheckVariableTable;\r
+ mVarCheckLibAddressPointer[mVarCheckLibAddressPointerCount++] = (VOID **)&mVarCheckVariableTable;\r
for (Index = 0; Index < mNumberOfVarCheckVariable; Index++) {\r
- mVarCheckLibAddressPointer[mVarCheckLibAddressPointerCount++] = (VOID **) &mVarCheckVariableTable[Index];\r
+ mVarCheckLibAddressPointer[mVarCheckLibAddressPointerCount++] = (VOID **)&mVarCheckVariableTable[Index];\r
}\r
\r
ASSERT (mVarCheckLibAddressPointerCount == TotalCount);\r
EFI_STATUS\r
EFIAPI\r
VarCheckLibRegisterAddressPointer (\r
- IN VOID **AddressPointer\r
+ IN VOID **AddressPointer\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
if (AddressPointer == NULL) {\r
return EFI_INVALID_PARAMETER;\r
return EFI_ACCESS_DENIED;\r
}\r
\r
- Status = VarCheckAddTableEntry(\r
- (UINTN **) &mVarCheckLibAddressPointer,\r
- &mVarCheckLibAddressPointerMaxCount,\r
- &mVarCheckLibAddressPointerCount,\r
- (UINTN) AddressPointer\r
- );\r
+ Status = VarCheckAddTableEntry (\r
+ (UINTN **)&mVarCheckLibAddressPointer,\r
+ &mVarCheckLibAddressPointerMaxCount,\r
+ &mVarCheckLibAddressPointerCount,\r
+ (UINTN)AddressPointer\r
+ );\r
\r
- DEBUG ((EFI_D_INFO, "VarCheckLibRegisterAddressPointer - 0x%x %r\n", AddressPointer, Status));\r
+ DEBUG ((DEBUG_INFO, "VarCheckLibRegisterAddressPointer - 0x%x %r\n", AddressPointer, Status));\r
\r
return Status;\r
}\r
EFI_STATUS\r
EFIAPI\r
VarCheckLibRegisterSetVariableCheckHandler (\r
- IN VAR_CHECK_SET_VARIABLE_CHECK_HANDLER Handler\r
+ IN VAR_CHECK_SET_VARIABLE_CHECK_HANDLER Handler\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
if (Handler == NULL) {\r
return EFI_INVALID_PARAMETER;\r
return EFI_ACCESS_DENIED;\r
}\r
\r
- Status = VarCheckAddTableEntry(\r
- (UINTN **) &mVarCheckHandlerTable,\r
- &mMaxNumberOfVarCheckHandler,\r
- &mNumberOfVarCheckHandler,\r
- (UINTN) Handler\r
- );\r
+ Status = VarCheckAddTableEntry (\r
+ (UINTN **)&mVarCheckHandlerTable,\r
+ &mMaxNumberOfVarCheckHandler,\r
+ &mNumberOfVarCheckHandler,\r
+ (UINTN)Handler\r
+ );\r
\r
- DEBUG ((EFI_D_INFO, "VarCheckLibRegisterSetVariableCheckHandler - 0x%x %r\n", Handler, Status));\r
+ DEBUG ((DEBUG_INFO, "VarCheckLibRegisterSetVariableCheckHandler - 0x%x %r\n", Handler, Status));\r
\r
return Status;\r
}\r
EFI_STATUS\r
EFIAPI\r
VarCheckLibVariablePropertySet (\r
- IN CHAR16 *Name,\r
- IN EFI_GUID *Guid,\r
- IN VAR_CHECK_VARIABLE_PROPERTY *VariableProperty\r
+ IN CHAR16 *Name,\r
+ IN EFI_GUID *Guid,\r
+ IN VAR_CHECK_VARIABLE_PROPERTY *VariableProperty\r
)\r
{\r
- EFI_STATUS Status;\r
- VAR_CHECK_VARIABLE_ENTRY *Entry;\r
- CHAR16 *VariableName;\r
- VAR_CHECK_VARIABLE_PROPERTY *Property;\r
+ EFI_STATUS Status;\r
+ VAR_CHECK_VARIABLE_ENTRY *Entry;\r
+ CHAR16 *VariableName;\r
+ VAR_CHECK_VARIABLE_PROPERTY *Property;\r
\r
- if (Name == NULL || Name[0] == 0 || Guid == NULL) {\r
+ if ((Name == NULL) || (Name[0] == 0) || (Guid == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
if (Entry == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
- VariableName = (CHAR16 *) ((UINTN) Entry + sizeof (*Entry));\r
+\r
+ VariableName = (CHAR16 *)((UINTN)Entry + sizeof (*Entry));\r
StrCpyS (VariableName, StrSize (Name)/sizeof (CHAR16), Name);\r
CopyGuid (&Entry->Guid, Guid);\r
CopyMem (&Entry->VariableProperty, VariableProperty, sizeof (*VariableProperty));\r
\r
- Status = VarCheckAddTableEntry(\r
- (UINTN **) &mVarCheckVariableTable,\r
+ Status = VarCheckAddTableEntry (\r
+ (UINTN **)&mVarCheckVariableTable,\r
&mMaxNumberOfVarCheckVariable,\r
&mNumberOfVarCheckVariable,\r
- (UINTN) Entry\r
+ (UINTN)Entry\r
);\r
\r
if (EFI_ERROR (Status)) {\r
EFI_STATUS\r
EFIAPI\r
VarCheckLibVariablePropertyGet (\r
- IN CHAR16 *Name,\r
- IN EFI_GUID *Guid,\r
- OUT VAR_CHECK_VARIABLE_PROPERTY *VariableProperty\r
+ IN CHAR16 *Name,\r
+ IN EFI_GUID *Guid,\r
+ OUT VAR_CHECK_VARIABLE_PROPERTY *VariableProperty\r
)\r
{\r
- VAR_CHECK_VARIABLE_PROPERTY *Property;\r
+ VAR_CHECK_VARIABLE_PROPERTY *Property;\r
\r
- if (Name == NULL || Name[0] == 0 || Guid == NULL) {\r
+ if ((Name == NULL) || (Name[0] == 0) || (Guid == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
EFI_STATUS\r
EFIAPI\r
VarCheckLibSetVariableCheck (\r
- IN CHAR16 *VariableName,\r
- IN EFI_GUID *VendorGuid,\r
- IN UINT32 Attributes,\r
- IN UINTN DataSize,\r
- IN VOID *Data,\r
- IN VAR_CHECK_REQUEST_SOURCE RequestSource\r
+ IN CHAR16 *VariableName,\r
+ IN EFI_GUID *VendorGuid,\r
+ IN UINT32 Attributes,\r
+ IN UINTN DataSize,\r
+ IN VOID *Data,\r
+ IN VAR_CHECK_REQUEST_SOURCE RequestSource\r
)\r
{\r
- EFI_STATUS Status;\r
- UINTN Index;\r
- VAR_CHECK_VARIABLE_PROPERTY *Property;\r
+ EFI_STATUS Status;\r
+ UINTN Index;\r
+ VAR_CHECK_VARIABLE_PROPERTY *Property;\r
\r
if (!mVarCheckLibEndOfDxe) {\r
//\r
//\r
if ((Property != NULL) && (Property->Revision == VAR_CHECK_VARIABLE_PROPERTY_REVISION)) {\r
if ((RequestSource != VarCheckFromTrusted) && ((Property->Property & VAR_CHECK_VARIABLE_PROPERTY_READ_ONLY) != 0)) {\r
- DEBUG ((EFI_D_INFO, "Variable Check ReadOnly variable fail %r - %g:%s\n", EFI_WRITE_PROTECTED, VendorGuid, VariableName));\r
+ DEBUG ((DEBUG_INFO, "Variable Check ReadOnly variable fail %r - %g:%s\n", EFI_WRITE_PROTECTED, VendorGuid, VariableName));\r
return EFI_WRITE_PROTECTED;\r
}\r
+\r
if (!((((Attributes & EFI_VARIABLE_APPEND_WRITE) == 0) && (DataSize == 0)) || (Attributes == 0))) {\r
//\r
// Not to delete variable.\r
//\r
if ((Property->Attributes != 0) && ((Attributes & (~EFI_VARIABLE_APPEND_WRITE)) != Property->Attributes)) {\r
- DEBUG ((EFI_D_INFO, "Variable Check Attributes(0x%08x to 0x%08x) fail %r - %g:%s\n", Property->Attributes, Attributes, EFI_INVALID_PARAMETER, VendorGuid, VariableName));\r
+ DEBUG ((DEBUG_INFO, "Variable Check Attributes(0x%08x to 0x%08x) fail %r - %g:%s\n", Property->Attributes, Attributes, EFI_INVALID_PARAMETER, VendorGuid, VariableName));\r
return EFI_INVALID_PARAMETER;\r
}\r
+\r
if (DataSize != 0) {\r
if ((DataSize < Property->MinSize) || (DataSize > Property->MaxSize)) {\r
- DEBUG ((EFI_D_INFO, "Variable Check DataSize fail(0x%x not in 0x%x - 0x%x) %r - %g:%s\n", DataSize, Property->MinSize, Property->MaxSize, EFI_INVALID_PARAMETER, VendorGuid, VariableName));\r
+ DEBUG ((DEBUG_INFO, "Variable Check DataSize fail(0x%x not in 0x%x - 0x%x) %r - %g:%s\n", DataSize, Property->MinSize, Property->MaxSize, EFI_INVALID_PARAMETER, VendorGuid, VariableName));\r
return EFI_INVALID_PARAMETER;\r
}\r
}\r
}\r
\r
for (Index = 0; Index < mNumberOfVarCheckHandler; Index++) {\r
- Status = mVarCheckHandlerTable[Index] (\r
- VariableName,\r
- VendorGuid,\r
- Attributes,\r
- DataSize,\r
- Data\r
- );\r
+ Status = mVarCheckHandlerTable[Index](\r
+ VariableName,\r
+ VendorGuid,\r
+ Attributes,\r
+ DataSize,\r
+ Data\r
+ );\r
+ if ((Status == EFI_WRITE_PROTECTED) && (RequestSource == VarCheckFromTrusted)) {\r
+ //\r
+ // If RequestSource is trusted, then allow variable to be set even if it\r
+ // is write protected.\r
+ //\r
+ continue;\r
+ }\r
+\r
if (EFI_ERROR (Status)) {\r
- DEBUG ((EFI_D_INFO, "Variable Check handler fail %r - %g:%s\n", Status, VendorGuid, VariableName));\r
+ DEBUG ((DEBUG_INFO, "Variable Check handler fail %r - %g:%s\n", Status, VendorGuid, VariableName));\r
return Status;\r
}\r
}\r
+\r
return EFI_SUCCESS;\r
}\r