2 Implementation functions and structures for var check uefi library.
4 Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>
5 SPDX-License-Identifier: BSD-2-Clause-Patent
9 #include <Uefi/UefiBaseType.h>
11 #include <Library/VarCheckLib.h>
12 #include <Library/BaseLib.h>
13 #include <Library/BaseMemoryLib.h>
14 #include <Library/DebugLib.h>
15 #include <Library/DevicePathLib.h>
17 #include <Guid/VariableFormat.h>
18 #include <Guid/GlobalVariable.h>
19 #include <Guid/HardwareErrorVariable.h>
20 #include <Guid/ImageAuthentication.h>
24 (EFIAPI
*INTERNAL_VAR_CHECK_FUNCTION
) (
25 IN VAR_CHECK_VARIABLE_PROPERTY
*Propery
,
32 VAR_CHECK_VARIABLE_PROPERTY VariableProperty
;
33 INTERNAL_VAR_CHECK_FUNCTION CheckFunction
;
34 } UEFI_DEFINED_VARIABLE_ENTRY
;
37 Internal check for load option.
39 @param[in] VariablePropery Pointer to variable property.
40 @param[in] DataSize Data size.
41 @param[in] Data Pointer to data buffer.
43 @retval EFI_SUCCESS The SetVariable check result was success.
44 @retval EFI_INVALID_PARAMETER The data buffer is not a valid load option.
49 InternalVarCheckLoadOption (
50 IN VAR_CHECK_VARIABLE_PROPERTY
*VariablePropery
,
55 UINT16 FilePathListLength
;
57 EFI_DEVICE_PATH_PROTOCOL
*FilePathList
;
59 FilePathListLength
= *((UINT16
*) ((UINTN
) Data
+ sizeof (UINT32
)));
64 Description
= (CHAR16
*) ((UINTN
) Data
+ sizeof (UINT32
) + sizeof (UINT16
));
65 while (Description
< (CHAR16
*) ((UINTN
) Data
+ DataSize
)) {
66 if (*Description
== L
'\0') {
71 if ((UINTN
) Description
>= ((UINTN
) Data
+ DataSize
)) {
72 return EFI_INVALID_PARAMETER
;
79 FilePathList
= (EFI_DEVICE_PATH_PROTOCOL
*) Description
;
80 if ((UINTN
) FilePathList
> (MAX_ADDRESS
- FilePathListLength
)) {
81 return EFI_INVALID_PARAMETER
;
83 if (((UINTN
) FilePathList
+ FilePathListLength
) > ((UINTN
) Data
+ DataSize
)) {
84 return EFI_INVALID_PARAMETER
;
86 if (FilePathListLength
< sizeof (EFI_DEVICE_PATH_PROTOCOL
)) {
87 return EFI_INVALID_PARAMETER
;
89 if (!IsDevicePathValid (FilePathList
, FilePathListLength
)) {
90 return EFI_INVALID_PARAMETER
;
97 Internal check for key option.
99 @param[in] VariablePropery Pointer to variable property.
100 @param[in] DataSize Data size.
101 @param[in] Data Pointer to data buffer.
103 @retval EFI_SUCCESS The SetVariable check result was success.
104 @retval EFI_INVALID_PARAMETER The data buffer is not a valid key option.
109 InternalVarCheckKeyOption (
110 IN VAR_CHECK_VARIABLE_PROPERTY
*VariablePropery
,
115 if (((DataSize
- sizeof (EFI_KEY_OPTION
)) % sizeof (EFI_INPUT_KEY
)) != 0) {
116 return EFI_INVALID_PARAMETER
;
123 Internal check for device path.
125 @param[in] VariablePropery Pointer to variable property.
126 @param[in] DataSize Data size.
127 @param[in] Data Pointer to data buffer.
129 @retval EFI_SUCCESS The SetVariable check result was success.
130 @retval EFI_INVALID_PARAMETER The data buffer is not a valid device path.
135 InternalVarCheckDevicePath (
136 IN VAR_CHECK_VARIABLE_PROPERTY
*VariablePropery
,
141 if (!IsDevicePathValid ((EFI_DEVICE_PATH_PROTOCOL
*) Data
, DataSize
)) {
142 return EFI_INVALID_PARAMETER
;
148 Internal check for ASCII string.
150 @param[in] VariablePropery Pointer to variable property.
151 @param[in] DataSize Data size.
152 @param[in] Data Pointer to data buffer.
154 @retval EFI_SUCCESS The SetVariable check result was success.
155 @retval EFI_INVALID_PARAMETER The data buffer is not a Null-terminated ASCII string.
160 InternalVarCheckAsciiString (
161 IN VAR_CHECK_VARIABLE_PROPERTY
*VariablePropery
,
169 String
= (CHAR8
*) Data
;
170 if (String
[DataSize
- 1] == '\0') {
173 for (Index
= 1; Index
< DataSize
&& (String
[DataSize
- 1 - Index
] != '\0'); Index
++);
174 if (Index
== DataSize
) {
175 return EFI_INVALID_PARAMETER
;
182 Internal check for size array.
184 @param[in] VariablePropery Pointer to variable property.
185 @param[in] DataSize Data size.
186 @param[in] Data Pointer to data buffer.
188 @retval EFI_SUCCESS The SetVariable check result was success.
189 @retval EFI_INVALID_PARAMETER The DataSize is not size array.
194 InternalVarCheckSizeArray (
195 IN VAR_CHECK_VARIABLE_PROPERTY
*VariablePropery
,
200 if ((DataSize
% VariablePropery
->MinSize
) != 0) {
201 return EFI_INVALID_PARAMETER
;
207 // To prevent name collisions with possible future globally defined variables,
208 // other internal firmware data variables that are not defined here must be
209 // saved with a unique VendorGuid other than EFI_GLOBAL_VARIABLE or
210 // any other GUID defined by the UEFI Specification. Implementations must
211 // only permit the creation of variables with a UEFI Specification-defined
212 // VendorGuid when these variables are documented in the UEFI Specification.
214 UEFI_DEFINED_VARIABLE_ENTRY mGlobalVariableList
[] = {
216 EFI_LANG_CODES_VARIABLE_NAME
,
218 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
220 VARIABLE_ATTRIBUTE_BS_RT
,
224 InternalVarCheckAsciiString
227 EFI_LANG_VARIABLE_NAME
,
229 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
231 VARIABLE_ATTRIBUTE_NV_BS_RT
,
235 InternalVarCheckAsciiString
238 EFI_TIME_OUT_VARIABLE_NAME
,
240 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
242 VARIABLE_ATTRIBUTE_NV_BS_RT
,
249 EFI_PLATFORM_LANG_CODES_VARIABLE_NAME
,
251 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
253 VARIABLE_ATTRIBUTE_BS_RT
,
257 InternalVarCheckAsciiString
260 EFI_PLATFORM_LANG_VARIABLE_NAME
,
262 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
264 VARIABLE_ATTRIBUTE_NV_BS_RT
,
268 InternalVarCheckAsciiString
271 EFI_CON_IN_VARIABLE_NAME
,
273 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
275 VARIABLE_ATTRIBUTE_NV_BS_RT
,
276 sizeof (EFI_DEVICE_PATH_PROTOCOL
),
279 InternalVarCheckDevicePath
282 EFI_CON_OUT_VARIABLE_NAME
,
284 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
286 VARIABLE_ATTRIBUTE_NV_BS_RT
,
287 sizeof (EFI_DEVICE_PATH_PROTOCOL
),
290 InternalVarCheckDevicePath
293 EFI_ERR_OUT_VARIABLE_NAME
,
295 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
297 VARIABLE_ATTRIBUTE_NV_BS_RT
,
298 sizeof (EFI_DEVICE_PATH_PROTOCOL
),
301 InternalVarCheckDevicePath
304 EFI_CON_IN_DEV_VARIABLE_NAME
,
306 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
308 VARIABLE_ATTRIBUTE_BS_RT
,
309 sizeof (EFI_DEVICE_PATH_PROTOCOL
),
312 InternalVarCheckDevicePath
315 EFI_CON_OUT_DEV_VARIABLE_NAME
,
317 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
319 VARIABLE_ATTRIBUTE_BS_RT
,
320 sizeof (EFI_DEVICE_PATH_PROTOCOL
),
323 InternalVarCheckDevicePath
326 EFI_ERR_OUT_DEV_VARIABLE_NAME
,
328 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
330 VARIABLE_ATTRIBUTE_BS_RT
,
331 sizeof (EFI_DEVICE_PATH_PROTOCOL
),
334 InternalVarCheckDevicePath
337 EFI_BOOT_ORDER_VARIABLE_NAME
,
339 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
341 VARIABLE_ATTRIBUTE_NV_BS_RT
,
345 InternalVarCheckSizeArray
348 EFI_BOOT_NEXT_VARIABLE_NAME
,
350 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
352 VARIABLE_ATTRIBUTE_NV_BS_RT
,
359 EFI_BOOT_CURRENT_VARIABLE_NAME
,
361 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
363 VARIABLE_ATTRIBUTE_BS_RT
,
370 EFI_BOOT_OPTION_SUPPORT_VARIABLE_NAME
,
372 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
374 VARIABLE_ATTRIBUTE_BS_RT
,
381 EFI_DRIVER_ORDER_VARIABLE_NAME
,
383 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
385 VARIABLE_ATTRIBUTE_NV_BS_RT
,
389 InternalVarCheckSizeArray
392 EFI_SYS_PREP_ORDER_VARIABLE_NAME
,
394 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
396 VARIABLE_ATTRIBUTE_NV_BS_RT
,
400 InternalVarCheckSizeArray
403 EFI_HW_ERR_REC_SUPPORT_VARIABLE_NAME
,
405 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
407 VARIABLE_ATTRIBUTE_NV_BS_RT
,
416 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
417 VAR_CHECK_VARIABLE_PROPERTY_READ_ONLY
,
418 VARIABLE_ATTRIBUTE_BS_RT
,
425 EFI_KEY_EXCHANGE_KEY_NAME
,
427 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
429 VARIABLE_ATTRIBUTE_NV_BS_RT_AT
,
436 EFI_PLATFORM_KEY_NAME
,
438 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
440 VARIABLE_ATTRIBUTE_NV_BS_RT_AT
,
447 EFI_SIGNATURE_SUPPORT_NAME
,
449 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
450 VAR_CHECK_VARIABLE_PROPERTY_READ_ONLY
,
451 VARIABLE_ATTRIBUTE_BS_RT
,
455 InternalVarCheckSizeArray
458 EFI_SECURE_BOOT_MODE_NAME
,
460 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
461 VAR_CHECK_VARIABLE_PROPERTY_READ_ONLY
,
462 VARIABLE_ATTRIBUTE_BS_RT
,
469 EFI_KEK_DEFAULT_VARIABLE_NAME
,
471 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
472 VAR_CHECK_VARIABLE_PROPERTY_READ_ONLY
,
473 VARIABLE_ATTRIBUTE_BS_RT
,
480 EFI_PK_DEFAULT_VARIABLE_NAME
,
482 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
483 VAR_CHECK_VARIABLE_PROPERTY_READ_ONLY
,
484 VARIABLE_ATTRIBUTE_BS_RT
,
491 EFI_DB_DEFAULT_VARIABLE_NAME
,
493 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
494 VAR_CHECK_VARIABLE_PROPERTY_READ_ONLY
,
495 VARIABLE_ATTRIBUTE_BS_RT
,
502 EFI_DBX_DEFAULT_VARIABLE_NAME
,
504 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
505 VAR_CHECK_VARIABLE_PROPERTY_READ_ONLY
,
506 VARIABLE_ATTRIBUTE_BS_RT
,
513 EFI_DBT_DEFAULT_VARIABLE_NAME
,
515 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
516 VAR_CHECK_VARIABLE_PROPERTY_READ_ONLY
,
517 VARIABLE_ATTRIBUTE_BS_RT
,
524 EFI_OS_INDICATIONS_SUPPORT_VARIABLE_NAME
,
526 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
528 VARIABLE_ATTRIBUTE_BS_RT
,
535 EFI_OS_INDICATIONS_VARIABLE_NAME
,
537 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
539 VARIABLE_ATTRIBUTE_NV_BS_RT
,
546 EFI_VENDOR_KEYS_VARIABLE_NAME
,
548 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
549 VAR_CHECK_VARIABLE_PROPERTY_READ_ONLY
,
550 VARIABLE_ATTRIBUTE_BS_RT
,
558 UEFI_DEFINED_VARIABLE_ENTRY mGlobalVariableList2
[] = {
562 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
564 VARIABLE_ATTRIBUTE_NV_BS_RT
,
565 sizeof (UINT32
) + sizeof (UINT16
),
568 InternalVarCheckLoadOption
573 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
575 VARIABLE_ATTRIBUTE_NV_BS_RT
,
576 sizeof (UINT32
) + sizeof (UINT16
),
579 InternalVarCheckLoadOption
584 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
586 VARIABLE_ATTRIBUTE_NV_BS_RT
,
587 sizeof (UINT32
) + sizeof (UINT16
),
590 InternalVarCheckLoadOption
595 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
597 VARIABLE_ATTRIBUTE_NV_BS_RT
,
598 sizeof (EFI_KEY_OPTION
),
599 sizeof (EFI_KEY_OPTION
) + 3 * sizeof (EFI_INPUT_KEY
)
601 InternalVarCheckKeyOption
604 L
"PlatformRecovery####",
606 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
608 VARIABLE_ATTRIBUTE_BS_RT
,
609 sizeof (UINT32
) + sizeof (UINT16
),
612 InternalVarCheckLoadOption
617 // EFI_IMAGE_SECURITY_DATABASE_GUID
619 UEFI_DEFINED_VARIABLE_ENTRY mImageSecurityVariableList
[] = {
621 EFI_IMAGE_SECURITY_DATABASE
,
623 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
625 VARIABLE_ATTRIBUTE_NV_BS_RT_AT
,
632 EFI_IMAGE_SECURITY_DATABASE1
,
634 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
636 VARIABLE_ATTRIBUTE_NV_BS_RT_AT
,
643 EFI_IMAGE_SECURITY_DATABASE2
,
645 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
647 VARIABLE_ATTRIBUTE_NV_BS_RT_AT
,
656 // EFI_HARDWARE_ERROR_VARIABLE
658 UEFI_DEFINED_VARIABLE_ENTRY mHwErrRecVariable
= {
661 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
663 VARIABLE_ATTRIBUTE_NV_BS_RT_HR
,
670 EFI_GUID
*mUefiDefinedGuid
[] = {
671 &gEfiGlobalVariableGuid
,
672 &gEfiImageSecurityDatabaseGuid
,
673 &gEfiHardwareErrorVariableGuid
677 Check if a Unicode character is an upper case hexadecimal character.
679 This function checks if a Unicode character is an upper case
680 hexadecimal character. The valid upper case hexadecimal character is
681 L'0' to L'9', or L'A' to L'F'.
684 @param[in] Char The character to check against.
686 @retval TRUE If the Char is an upper case hexadecmial character.
687 @retval FALSE If the Char is not an upper case hexadecmial character.
692 VarCheckUefiIsHexaDecimalDigitCharacter (
696 return (BOOLEAN
) ((Char
>= L
'0' && Char
<= L
'9') || (Char
>= L
'A' && Char
<= L
'F'));
701 This code checks if variable is hardware error record variable or not.
703 According to UEFI spec, hardware error record variable should use the EFI_HARDWARE_ERROR_VARIABLE VendorGuid
704 and have the L"HwErrRec####" name convention, #### is a printed hex value and no 0x or h is included in the hex value.
706 @param[in] VariableName Pointer to variable name.
707 @param[in] VendorGuid Variable Vendor Guid.
709 @retval TRUE Variable is hardware error record variable.
710 @retval FALSE Variable is not hardware error record variable.
716 IN CHAR16
*VariableName
,
717 IN EFI_GUID
*VendorGuid
720 if (!CompareGuid (VendorGuid
, &gEfiHardwareErrorVariableGuid
) ||
721 (StrLen (VariableName
) != StrLen (L
"HwErrRec####")) ||
722 (StrnCmp(VariableName
, L
"HwErrRec", StrLen (L
"HwErrRec")) != 0) ||
723 !VarCheckUefiIsHexaDecimalDigitCharacter (VariableName
[0x8]) ||
724 !VarCheckUefiIsHexaDecimalDigitCharacter (VariableName
[0x9]) ||
725 !VarCheckUefiIsHexaDecimalDigitCharacter (VariableName
[0xA]) ||
726 !VarCheckUefiIsHexaDecimalDigitCharacter (VariableName
[0xB])) {
734 Get UEFI defined var check function.
736 @param[in] VariableName Pointer to variable name.
737 @param[in] VendorGuid Pointer to variable vendor GUID.
738 @param[out] VariableProperty Pointer to variable property.
740 @return Internal var check function, NULL if no specific check function.
743 INTERNAL_VAR_CHECK_FUNCTION
744 GetUefiDefinedVarCheckFunction (
745 IN CHAR16
*VariableName
,
746 IN EFI_GUID
*VendorGuid
,
747 OUT VAR_CHECK_VARIABLE_PROPERTY
**VariableProperty
753 if (CompareGuid (VendorGuid
, &gEfiGlobalVariableGuid
)) {
755 // Try list 1, exactly match.
757 for (Index
= 0; Index
< sizeof (mGlobalVariableList
)/sizeof (mGlobalVariableList
[0]); Index
++) {
758 if (StrCmp (mGlobalVariableList
[Index
].Name
, VariableName
) == 0) {
759 *VariableProperty
= &(mGlobalVariableList
[Index
].VariableProperty
);
760 return mGlobalVariableList
[Index
].CheckFunction
;
767 NameLength
= StrLen (VariableName
) - 4;
768 for (Index
= 0; Index
< sizeof (mGlobalVariableList2
)/sizeof (mGlobalVariableList2
[0]); Index
++) {
769 if ((StrLen (VariableName
) == StrLen (mGlobalVariableList2
[Index
].Name
)) &&
770 (StrnCmp (VariableName
, mGlobalVariableList2
[Index
].Name
, NameLength
) == 0) &&
771 VarCheckUefiIsHexaDecimalDigitCharacter (VariableName
[NameLength
]) &&
772 VarCheckUefiIsHexaDecimalDigitCharacter (VariableName
[NameLength
+ 1]) &&
773 VarCheckUefiIsHexaDecimalDigitCharacter (VariableName
[NameLength
+ 2]) &&
774 VarCheckUefiIsHexaDecimalDigitCharacter (VariableName
[NameLength
+ 3])) {
775 *VariableProperty
= &(mGlobalVariableList2
[Index
].VariableProperty
);
776 return mGlobalVariableList2
[Index
].CheckFunction
;
785 SetVariable check handler UEFI defined.
787 @param[in] VariableName Name of Variable to set.
788 @param[in] VendorGuid Variable vendor GUID.
789 @param[in] Attributes Attribute value of the variable.
790 @param[in] DataSize Size of Data to set.
791 @param[in] Data Data pointer.
793 @retval EFI_SUCCESS The SetVariable check result was success.
794 @retval EFI_INVALID_PARAMETER An invalid combination of attribute bits, name, GUID,
795 DataSize and Data value was supplied.
796 @retval EFI_WRITE_PROTECTED The variable in question is read-only.
801 SetVariableCheckHandlerUefiDefined (
802 IN CHAR16
*VariableName
,
803 IN EFI_GUID
*VendorGuid
,
804 IN UINT32 Attributes
,
811 VAR_CHECK_VARIABLE_PROPERTY Property
;
812 VAR_CHECK_VARIABLE_PROPERTY
*VarCheckProperty
;
813 INTERNAL_VAR_CHECK_FUNCTION VarCheckFunction
;
815 if ((((Attributes
& EFI_VARIABLE_APPEND_WRITE
) == 0) && (DataSize
== 0)) || (Attributes
== 0)) {
817 // Do not check delete variable.
822 if ((Attributes
& EFI_VARIABLE_HARDWARE_ERROR_RECORD
) == EFI_VARIABLE_HARDWARE_ERROR_RECORD
) {
823 if (!IsHwErrRecVariable (VariableName
, VendorGuid
)) {
824 return EFI_INVALID_PARAMETER
;
828 for (Index
= 0; Index
< sizeof (mUefiDefinedGuid
)/sizeof (mUefiDefinedGuid
[0]); Index
++) {
829 if (CompareGuid (VendorGuid
, mUefiDefinedGuid
[Index
])) {
830 if (VarCheckLibVariablePropertyGet (VariableName
, VendorGuid
, &Property
) == EFI_NOT_FOUND
) {
832 // To prevent name collisions with possible future globally defined variables,
833 // other internal firmware data variables that are not defined here must be
834 // saved with a unique VendorGuid other than EFI_GLOBAL_VARIABLE or
835 // any other GUID defined by the UEFI Specification. Implementations must
836 // only permit the creation of variables with a UEFI Specification-defined
837 // VendorGuid when these variables are documented in the UEFI Specification.
839 DEBUG ((EFI_D_INFO
, "UEFI Variable Check fail %r - %s not in %g namespace\n", EFI_INVALID_PARAMETER
, VariableName
, VendorGuid
));
840 return EFI_INVALID_PARAMETER
;
849 VarCheckProperty
= NULL
;
850 VarCheckFunction
= GetUefiDefinedVarCheckFunction (VariableName
, VendorGuid
, &VarCheckProperty
);
851 if (VarCheckFunction
!= NULL
) {
852 Status
= VarCheckFunction (
857 if (EFI_ERROR (Status
)) {
858 DEBUG ((EFI_D_INFO
, "UEFI Variable Check function fail %r - %g:%s\n", Status
, VendorGuid
, VariableName
));
867 Variable property set for UEFI defined variables.
871 VariablePropertySetUefiDefined (
878 // EFI_GLOBAL_VARIABLE
880 for (Index
= 0; Index
< sizeof (mGlobalVariableList
)/sizeof (mGlobalVariableList
[0]); Index
++) {
881 VarCheckLibVariablePropertySet (
882 mGlobalVariableList
[Index
].Name
,
883 &gEfiGlobalVariableGuid
,
884 &mGlobalVariableList
[Index
].VariableProperty
887 for (Index
= 0; Index
< sizeof (mGlobalVariableList2
)/sizeof (mGlobalVariableList2
[0]); Index
++) {
888 VarCheckLibVariablePropertySet (
889 mGlobalVariableList2
[Index
].Name
,
890 &gEfiGlobalVariableGuid
,
891 &mGlobalVariableList2
[Index
].VariableProperty
896 // EFI_IMAGE_SECURITY_DATABASE_GUID
898 for (Index
= 0; Index
< sizeof (mImageSecurityVariableList
)/sizeof (mImageSecurityVariableList
[0]); Index
++) {
899 VarCheckLibVariablePropertySet (
900 mImageSecurityVariableList
[Index
].Name
,
901 &gEfiImageSecurityDatabaseGuid
,
902 &mImageSecurityVariableList
[Index
].VariableProperty
907 // EFI_HARDWARE_ERROR_VARIABLE
909 VarCheckLibVariablePropertySet (
910 mHwErrRecVariable
.Name
,
911 &gEfiHardwareErrorVariableGuid
,
912 &mHwErrRecVariable
.VariableProperty
917 Constructor function of VarCheckUefiLib to set property and
918 register SetVariable check handler for UEFI defined variables.
920 @retval EFI_SUCCESS The constructor executed correctly.
925 VarCheckUefiLibNullClassConstructor (
929 VariablePropertySetUefiDefined ();
930 VarCheckLibRegisterSetVariableCheckHandler (SetVariableCheckHandlerUefiDefined
);
932 return RETURN_SUCCESS
;