2 Implementation functions and structures for var check uefi library.
4 Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>
5 This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
15 #include <Uefi/UefiBaseType.h>
17 #include <Library/VarCheckLib.h>
18 #include <Library/BaseLib.h>
19 #include <Library/BaseMemoryLib.h>
20 #include <Library/DebugLib.h>
21 #include <Library/DevicePathLib.h>
23 #include <Guid/VariableFormat.h>
24 #include <Guid/GlobalVariable.h>
25 #include <Guid/HardwareErrorVariable.h>
26 #include <Guid/ImageAuthentication.h>
30 (EFIAPI
*INTERNAL_VAR_CHECK_FUNCTION
) (
31 IN VAR_CHECK_VARIABLE_PROPERTY
*Propery
,
38 VAR_CHECK_VARIABLE_PROPERTY VariableProperty
;
39 INTERNAL_VAR_CHECK_FUNCTION CheckFunction
;
40 } UEFI_DEFINED_VARIABLE_ENTRY
;
43 Internal check for load option.
45 @param[in] VariablePropery Pointer to variable property.
46 @param[in] DataSize Data size.
47 @param[in] Data Pointer to data buffer.
49 @retval EFI_SUCCESS The SetVariable check result was success.
50 @retval EFI_INVALID_PARAMETER The data buffer is not a valid load option.
55 InternalVarCheckLoadOption (
56 IN VAR_CHECK_VARIABLE_PROPERTY
*VariablePropery
,
61 UINT16 FilePathListLength
;
63 EFI_DEVICE_PATH_PROTOCOL
*FilePathList
;
65 FilePathListLength
= *((UINT16
*) ((UINTN
) Data
+ sizeof (UINT32
)));
70 Description
= (CHAR16
*) ((UINTN
) Data
+ sizeof (UINT32
) + sizeof (UINT16
));
71 while (Description
< (CHAR16
*) ((UINTN
) Data
+ DataSize
)) {
72 if (*Description
== L
'\0') {
77 if ((UINTN
) Description
>= ((UINTN
) Data
+ DataSize
)) {
78 return EFI_INVALID_PARAMETER
;
85 FilePathList
= (EFI_DEVICE_PATH_PROTOCOL
*) Description
;
86 if ((UINTN
) FilePathList
> (MAX_ADDRESS
- FilePathListLength
)) {
87 return EFI_INVALID_PARAMETER
;
89 if (((UINTN
) FilePathList
+ FilePathListLength
) > ((UINTN
) Data
+ DataSize
)) {
90 return EFI_INVALID_PARAMETER
;
92 if (FilePathListLength
< sizeof (EFI_DEVICE_PATH_PROTOCOL
)) {
93 return EFI_INVALID_PARAMETER
;
95 if (!IsDevicePathValid (FilePathList
, FilePathListLength
)) {
96 return EFI_INVALID_PARAMETER
;
103 Internal check for key option.
105 @param[in] VariablePropery Pointer to variable property.
106 @param[in] DataSize Data size.
107 @param[in] Data Pointer to data buffer.
109 @retval EFI_SUCCESS The SetVariable check result was success.
110 @retval EFI_INVALID_PARAMETER The data buffer is not a valid key option.
115 InternalVarCheckKeyOption (
116 IN VAR_CHECK_VARIABLE_PROPERTY
*VariablePropery
,
121 if (((DataSize
- sizeof (EFI_KEY_OPTION
)) % sizeof (EFI_INPUT_KEY
)) != 0) {
122 return EFI_INVALID_PARAMETER
;
129 Internal check for device path.
131 @param[in] VariablePropery Pointer to variable property.
132 @param[in] DataSize Data size.
133 @param[in] Data Pointer to data buffer.
135 @retval EFI_SUCCESS The SetVariable check result was success.
136 @retval EFI_INVALID_PARAMETER The data buffer is not a valid device path.
141 InternalVarCheckDevicePath (
142 IN VAR_CHECK_VARIABLE_PROPERTY
*VariablePropery
,
147 if (!IsDevicePathValid ((EFI_DEVICE_PATH_PROTOCOL
*) Data
, DataSize
)) {
148 return EFI_INVALID_PARAMETER
;
154 Internal check for ASCII string.
156 @param[in] VariablePropery Pointer to variable property.
157 @param[in] DataSize Data size.
158 @param[in] Data Pointer to data buffer.
160 @retval EFI_SUCCESS The SetVariable check result was success.
161 @retval EFI_INVALID_PARAMETER The data buffer is not a Null-terminated ASCII string.
166 InternalVarCheckAsciiString (
167 IN VAR_CHECK_VARIABLE_PROPERTY
*VariablePropery
,
175 String
= (CHAR8
*) Data
;
176 if (String
[DataSize
- 1] == '\0') {
179 for (Index
= 1; Index
< DataSize
&& (String
[DataSize
- 1 - Index
] != '\0'); Index
++);
180 if (Index
== DataSize
) {
181 return EFI_INVALID_PARAMETER
;
188 Internal check for size array.
190 @param[in] VariablePropery Pointer to variable property.
191 @param[in] DataSize Data size.
192 @param[in] Data Pointer to data buffer.
194 @retval EFI_SUCCESS The SetVariable check result was success.
195 @retval EFI_INVALID_PARAMETER The DataSize is not size array.
200 InternalVarCheckSizeArray (
201 IN VAR_CHECK_VARIABLE_PROPERTY
*VariablePropery
,
206 if ((DataSize
% VariablePropery
->MinSize
) != 0) {
207 return EFI_INVALID_PARAMETER
;
213 // To prevent name collisions with possible future globally defined variables,
214 // other internal firmware data variables that are not defined here must be
215 // saved with a unique VendorGuid other than EFI_GLOBAL_VARIABLE or
216 // any other GUID defined by the UEFI Specification. Implementations must
217 // only permit the creation of variables with a UEFI Specification-defined
218 // VendorGuid when these variables are documented in the UEFI Specification.
220 UEFI_DEFINED_VARIABLE_ENTRY mGlobalVariableList
[] = {
222 EFI_LANG_CODES_VARIABLE_NAME
,
224 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
226 VARIABLE_ATTRIBUTE_BS_RT
,
230 InternalVarCheckAsciiString
233 EFI_LANG_VARIABLE_NAME
,
235 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
237 VARIABLE_ATTRIBUTE_NV_BS_RT
,
241 InternalVarCheckAsciiString
244 EFI_TIME_OUT_VARIABLE_NAME
,
246 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
248 VARIABLE_ATTRIBUTE_NV_BS_RT
,
255 EFI_PLATFORM_LANG_CODES_VARIABLE_NAME
,
257 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
259 VARIABLE_ATTRIBUTE_BS_RT
,
263 InternalVarCheckAsciiString
266 EFI_PLATFORM_LANG_VARIABLE_NAME
,
268 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
270 VARIABLE_ATTRIBUTE_NV_BS_RT
,
274 InternalVarCheckAsciiString
277 EFI_CON_IN_VARIABLE_NAME
,
279 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
281 VARIABLE_ATTRIBUTE_NV_BS_RT
,
282 sizeof (EFI_DEVICE_PATH_PROTOCOL
),
285 InternalVarCheckDevicePath
288 EFI_CON_OUT_VARIABLE_NAME
,
290 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
292 VARIABLE_ATTRIBUTE_NV_BS_RT
,
293 sizeof (EFI_DEVICE_PATH_PROTOCOL
),
296 InternalVarCheckDevicePath
299 EFI_ERR_OUT_VARIABLE_NAME
,
301 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
303 VARIABLE_ATTRIBUTE_NV_BS_RT
,
304 sizeof (EFI_DEVICE_PATH_PROTOCOL
),
307 InternalVarCheckDevicePath
310 EFI_CON_IN_DEV_VARIABLE_NAME
,
312 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
314 VARIABLE_ATTRIBUTE_BS_RT
,
315 sizeof (EFI_DEVICE_PATH_PROTOCOL
),
318 InternalVarCheckDevicePath
321 EFI_CON_OUT_DEV_VARIABLE_NAME
,
323 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
325 VARIABLE_ATTRIBUTE_BS_RT
,
326 sizeof (EFI_DEVICE_PATH_PROTOCOL
),
329 InternalVarCheckDevicePath
332 EFI_ERR_OUT_DEV_VARIABLE_NAME
,
334 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
336 VARIABLE_ATTRIBUTE_BS_RT
,
337 sizeof (EFI_DEVICE_PATH_PROTOCOL
),
340 InternalVarCheckDevicePath
343 EFI_BOOT_ORDER_VARIABLE_NAME
,
345 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
347 VARIABLE_ATTRIBUTE_NV_BS_RT
,
351 InternalVarCheckSizeArray
354 EFI_BOOT_NEXT_VARIABLE_NAME
,
356 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
358 VARIABLE_ATTRIBUTE_NV_BS_RT
,
365 EFI_BOOT_CURRENT_VARIABLE_NAME
,
367 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
369 VARIABLE_ATTRIBUTE_BS_RT
,
376 EFI_BOOT_OPTION_SUPPORT_VARIABLE_NAME
,
378 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
380 VARIABLE_ATTRIBUTE_BS_RT
,
387 EFI_DRIVER_ORDER_VARIABLE_NAME
,
389 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
391 VARIABLE_ATTRIBUTE_NV_BS_RT
,
395 InternalVarCheckSizeArray
398 EFI_SYS_PREP_ORDER_VARIABLE_NAME
,
400 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
402 VARIABLE_ATTRIBUTE_NV_BS_RT
,
406 InternalVarCheckSizeArray
409 EFI_HW_ERR_REC_SUPPORT_VARIABLE_NAME
,
411 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
413 VARIABLE_ATTRIBUTE_NV_BS_RT
,
422 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
423 VAR_CHECK_VARIABLE_PROPERTY_READ_ONLY
,
424 VARIABLE_ATTRIBUTE_BS_RT
,
431 EFI_KEY_EXCHANGE_KEY_NAME
,
433 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
435 VARIABLE_ATTRIBUTE_NV_BS_RT_AT
,
442 EFI_PLATFORM_KEY_NAME
,
444 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
446 VARIABLE_ATTRIBUTE_NV_BS_RT_AT
,
453 EFI_SIGNATURE_SUPPORT_NAME
,
455 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
456 VAR_CHECK_VARIABLE_PROPERTY_READ_ONLY
,
457 VARIABLE_ATTRIBUTE_BS_RT
,
461 InternalVarCheckSizeArray
464 EFI_SECURE_BOOT_MODE_NAME
,
466 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
467 VAR_CHECK_VARIABLE_PROPERTY_READ_ONLY
,
468 VARIABLE_ATTRIBUTE_BS_RT
,
475 EFI_KEK_DEFAULT_VARIABLE_NAME
,
477 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
478 VAR_CHECK_VARIABLE_PROPERTY_READ_ONLY
,
479 VARIABLE_ATTRIBUTE_BS_RT
,
486 EFI_PK_DEFAULT_VARIABLE_NAME
,
488 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
489 VAR_CHECK_VARIABLE_PROPERTY_READ_ONLY
,
490 VARIABLE_ATTRIBUTE_BS_RT
,
497 EFI_DB_DEFAULT_VARIABLE_NAME
,
499 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
500 VAR_CHECK_VARIABLE_PROPERTY_READ_ONLY
,
501 VARIABLE_ATTRIBUTE_BS_RT
,
508 EFI_DBX_DEFAULT_VARIABLE_NAME
,
510 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
511 VAR_CHECK_VARIABLE_PROPERTY_READ_ONLY
,
512 VARIABLE_ATTRIBUTE_BS_RT
,
519 EFI_DBT_DEFAULT_VARIABLE_NAME
,
521 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
522 VAR_CHECK_VARIABLE_PROPERTY_READ_ONLY
,
523 VARIABLE_ATTRIBUTE_BS_RT
,
530 EFI_OS_INDICATIONS_SUPPORT_VARIABLE_NAME
,
532 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
534 VARIABLE_ATTRIBUTE_BS_RT
,
541 EFI_OS_INDICATIONS_VARIABLE_NAME
,
543 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
545 VARIABLE_ATTRIBUTE_NV_BS_RT
,
552 EFI_VENDOR_KEYS_VARIABLE_NAME
,
554 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
555 VAR_CHECK_VARIABLE_PROPERTY_READ_ONLY
,
556 VARIABLE_ATTRIBUTE_BS_RT
,
564 UEFI_DEFINED_VARIABLE_ENTRY mGlobalVariableList2
[] = {
568 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
570 VARIABLE_ATTRIBUTE_NV_BS_RT
,
571 sizeof (UINT32
) + sizeof (UINT16
),
574 InternalVarCheckLoadOption
579 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
581 VARIABLE_ATTRIBUTE_NV_BS_RT
,
582 sizeof (UINT32
) + sizeof (UINT16
),
585 InternalVarCheckLoadOption
590 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
592 VARIABLE_ATTRIBUTE_NV_BS_RT
,
593 sizeof (UINT32
) + sizeof (UINT16
),
596 InternalVarCheckLoadOption
601 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
603 VARIABLE_ATTRIBUTE_NV_BS_RT
,
604 sizeof (EFI_KEY_OPTION
),
605 sizeof (EFI_KEY_OPTION
) + 3 * sizeof (EFI_INPUT_KEY
)
607 InternalVarCheckKeyOption
610 L
"PlatformRecovery####",
612 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
614 VARIABLE_ATTRIBUTE_BS_RT
,
615 sizeof (UINT32
) + sizeof (UINT16
),
618 InternalVarCheckLoadOption
623 // EFI_IMAGE_SECURITY_DATABASE_GUID
625 UEFI_DEFINED_VARIABLE_ENTRY mImageSecurityVariableList
[] = {
627 EFI_IMAGE_SECURITY_DATABASE
,
629 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
631 VARIABLE_ATTRIBUTE_NV_BS_RT_AT
,
638 EFI_IMAGE_SECURITY_DATABASE1
,
640 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
642 VARIABLE_ATTRIBUTE_NV_BS_RT_AT
,
649 EFI_IMAGE_SECURITY_DATABASE2
,
651 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
653 VARIABLE_ATTRIBUTE_NV_BS_RT_AT
,
662 // EFI_HARDWARE_ERROR_VARIABLE
664 UEFI_DEFINED_VARIABLE_ENTRY mHwErrRecVariable
= {
667 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
669 VARIABLE_ATTRIBUTE_NV_BS_RT_HR
,
676 EFI_GUID
*mUefiDefinedGuid
[] = {
677 &gEfiGlobalVariableGuid
,
678 &gEfiImageSecurityDatabaseGuid
,
679 &gEfiHardwareErrorVariableGuid
683 Check if a Unicode character is an upper case hexadecimal character.
685 This function checks if a Unicode character is an upper case
686 hexadecimal character. The valid upper case hexadecimal character is
687 L'0' to L'9', or L'A' to L'F'.
690 @param[in] Char The character to check against.
692 @retval TRUE If the Char is an upper case hexadecmial character.
693 @retval FALSE If the Char is not an upper case hexadecmial character.
698 VarCheckUefiIsHexaDecimalDigitCharacter (
702 return (BOOLEAN
) ((Char
>= L
'0' && Char
<= L
'9') || (Char
>= L
'A' && Char
<= L
'F'));
707 This code checks if variable is hardware error record variable or not.
709 According to UEFI spec, hardware error record variable should use the EFI_HARDWARE_ERROR_VARIABLE VendorGuid
710 and have the L"HwErrRec####" name convention, #### is a printed hex value and no 0x or h is included in the hex value.
712 @param[in] VariableName Pointer to variable name.
713 @param[in] VendorGuid Variable Vendor Guid.
715 @retval TRUE Variable is hardware error record variable.
716 @retval FALSE Variable is not hardware error record variable.
722 IN CHAR16
*VariableName
,
723 IN EFI_GUID
*VendorGuid
726 if (!CompareGuid (VendorGuid
, &gEfiHardwareErrorVariableGuid
) ||
727 (StrLen (VariableName
) != StrLen (L
"HwErrRec####")) ||
728 (StrnCmp(VariableName
, L
"HwErrRec", StrLen (L
"HwErrRec")) != 0) ||
729 !VarCheckUefiIsHexaDecimalDigitCharacter (VariableName
[0x8]) ||
730 !VarCheckUefiIsHexaDecimalDigitCharacter (VariableName
[0x9]) ||
731 !VarCheckUefiIsHexaDecimalDigitCharacter (VariableName
[0xA]) ||
732 !VarCheckUefiIsHexaDecimalDigitCharacter (VariableName
[0xB])) {
740 Get UEFI defined var check function.
742 @param[in] VariableName Pointer to variable name.
743 @param[in] VendorGuid Pointer to variable vendor GUID.
744 @param[out] VariableProperty Pointer to variable property.
746 @return Internal var check function, NULL if no specific check function.
749 INTERNAL_VAR_CHECK_FUNCTION
750 GetUefiDefinedVarCheckFunction (
751 IN CHAR16
*VariableName
,
752 IN EFI_GUID
*VendorGuid
,
753 OUT VAR_CHECK_VARIABLE_PROPERTY
**VariableProperty
759 if (CompareGuid (VendorGuid
, &gEfiGlobalVariableGuid
)) {
761 // Try list 1, exactly match.
763 for (Index
= 0; Index
< sizeof (mGlobalVariableList
)/sizeof (mGlobalVariableList
[0]); Index
++) {
764 if (StrCmp (mGlobalVariableList
[Index
].Name
, VariableName
) == 0) {
765 *VariableProperty
= &(mGlobalVariableList
[Index
].VariableProperty
);
766 return mGlobalVariableList
[Index
].CheckFunction
;
773 NameLength
= StrLen (VariableName
) - 4;
774 for (Index
= 0; Index
< sizeof (mGlobalVariableList2
)/sizeof (mGlobalVariableList2
[0]); Index
++) {
775 if ((StrLen (VariableName
) == StrLen (mGlobalVariableList2
[Index
].Name
)) &&
776 (StrnCmp (VariableName
, mGlobalVariableList2
[Index
].Name
, NameLength
) == 0) &&
777 VarCheckUefiIsHexaDecimalDigitCharacter (VariableName
[NameLength
]) &&
778 VarCheckUefiIsHexaDecimalDigitCharacter (VariableName
[NameLength
+ 1]) &&
779 VarCheckUefiIsHexaDecimalDigitCharacter (VariableName
[NameLength
+ 2]) &&
780 VarCheckUefiIsHexaDecimalDigitCharacter (VariableName
[NameLength
+ 3])) {
781 *VariableProperty
= &(mGlobalVariableList2
[Index
].VariableProperty
);
782 return mGlobalVariableList2
[Index
].CheckFunction
;
791 SetVariable check handler UEFI defined.
793 @param[in] VariableName Name of Variable to set.
794 @param[in] VendorGuid Variable vendor GUID.
795 @param[in] Attributes Attribute value of the variable.
796 @param[in] DataSize Size of Data to set.
797 @param[in] Data Data pointer.
799 @retval EFI_SUCCESS The SetVariable check result was success.
800 @retval EFI_INVALID_PARAMETER An invalid combination of attribute bits, name, GUID,
801 DataSize and Data value was supplied.
802 @retval EFI_WRITE_PROTECTED The variable in question is read-only.
807 SetVariableCheckHandlerUefiDefined (
808 IN CHAR16
*VariableName
,
809 IN EFI_GUID
*VendorGuid
,
810 IN UINT32 Attributes
,
817 VAR_CHECK_VARIABLE_PROPERTY Property
;
818 VAR_CHECK_VARIABLE_PROPERTY
*VarCheckProperty
;
819 INTERNAL_VAR_CHECK_FUNCTION VarCheckFunction
;
821 if ((((Attributes
& EFI_VARIABLE_APPEND_WRITE
) == 0) && (DataSize
== 0)) || (Attributes
== 0)) {
823 // Do not check delete variable.
828 if ((Attributes
& EFI_VARIABLE_HARDWARE_ERROR_RECORD
) == EFI_VARIABLE_HARDWARE_ERROR_RECORD
) {
829 if (!IsHwErrRecVariable (VariableName
, VendorGuid
)) {
830 return EFI_INVALID_PARAMETER
;
834 for (Index
= 0; Index
< sizeof (mUefiDefinedGuid
)/sizeof (mUefiDefinedGuid
[0]); Index
++) {
835 if (CompareGuid (VendorGuid
, mUefiDefinedGuid
[Index
])) {
836 if (VarCheckLibVariablePropertyGet (VariableName
, VendorGuid
, &Property
) == EFI_NOT_FOUND
) {
838 // To prevent name collisions with possible future globally defined variables,
839 // other internal firmware data variables that are not defined here must be
840 // saved with a unique VendorGuid other than EFI_GLOBAL_VARIABLE or
841 // any other GUID defined by the UEFI Specification. Implementations must
842 // only permit the creation of variables with a UEFI Specification-defined
843 // VendorGuid when these variables are documented in the UEFI Specification.
845 DEBUG ((EFI_D_INFO
, "UEFI Variable Check fail %r - %s not in %g namespace\n", EFI_INVALID_PARAMETER
, VariableName
, VendorGuid
));
846 return EFI_INVALID_PARAMETER
;
855 VarCheckProperty
= NULL
;
856 VarCheckFunction
= GetUefiDefinedVarCheckFunction (VariableName
, VendorGuid
, &VarCheckProperty
);
857 if (VarCheckFunction
!= NULL
) {
858 Status
= VarCheckFunction (
863 if (EFI_ERROR (Status
)) {
864 DEBUG ((EFI_D_INFO
, "UEFI Variable Check function fail %r - %g:%s\n", Status
, VendorGuid
, VariableName
));
873 Variable property set for UEFI defined variables.
877 VariablePropertySetUefiDefined (
884 // EFI_GLOBAL_VARIABLE
886 for (Index
= 0; Index
< sizeof (mGlobalVariableList
)/sizeof (mGlobalVariableList
[0]); Index
++) {
887 VarCheckLibVariablePropertySet (
888 mGlobalVariableList
[Index
].Name
,
889 &gEfiGlobalVariableGuid
,
890 &mGlobalVariableList
[Index
].VariableProperty
893 for (Index
= 0; Index
< sizeof (mGlobalVariableList2
)/sizeof (mGlobalVariableList2
[0]); Index
++) {
894 VarCheckLibVariablePropertySet (
895 mGlobalVariableList2
[Index
].Name
,
896 &gEfiGlobalVariableGuid
,
897 &mGlobalVariableList2
[Index
].VariableProperty
902 // EFI_IMAGE_SECURITY_DATABASE_GUID
904 for (Index
= 0; Index
< sizeof (mImageSecurityVariableList
)/sizeof (mImageSecurityVariableList
[0]); Index
++) {
905 VarCheckLibVariablePropertySet (
906 mImageSecurityVariableList
[Index
].Name
,
907 &gEfiImageSecurityDatabaseGuid
,
908 &mImageSecurityVariableList
[Index
].VariableProperty
913 // EFI_HARDWARE_ERROR_VARIABLE
915 VarCheckLibVariablePropertySet (
916 mHwErrRecVariable
.Name
,
917 &gEfiHardwareErrorVariableGuid
,
918 &mHwErrRecVariable
.VariableProperty
923 Constructor function of VarCheckUefiLib to set property and
924 register SetVariable check handler for UEFI defined variables.
926 @retval EFI_SUCCESS The constructor executed correctly.
931 VarCheckUefiLibNullClassConstructor (
935 VariablePropertySetUefiDefined ();
936 VarCheckLibRegisterSetVariableCheckHandler (SetVariableCheckHandlerUefiDefined
);
938 return RETURN_SUCCESS
;