2 Implementation functions and structures for var check uefi library.
4 Copyright (c) 2015, 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 <Library/VarCheckLib.h>
16 #include <Library/BaseLib.h>
17 #include <Library/BaseMemoryLib.h>
18 #include <Library/DebugLib.h>
19 #include <Library/DevicePathLib.h>
21 #include <Guid/VariableFormat.h>
22 #include <Guid/GlobalVariable.h>
23 #include <Guid/HardwareErrorVariable.h>
24 #include <Guid/ImageAuthentication.h>
28 (EFIAPI
*INTERNAL_VAR_CHECK_FUNCTION
) (
29 IN VAR_CHECK_VARIABLE_PROPERTY
*Propery
,
36 VAR_CHECK_VARIABLE_PROPERTY VariableProperty
;
37 INTERNAL_VAR_CHECK_FUNCTION CheckFunction
;
38 } UEFI_DEFINED_VARIABLE_ENTRY
;
41 Internal check for load option.
43 @param[in] VariablePropery Pointer to variable property.
44 @param[in] DataSize Data size.
45 @param[in] Data Pointer to data buffer.
47 @retval EFI_SUCCESS The SetVariable check result was success.
48 @retval EFI_INVALID_PARAMETER The data buffer is not a valid load option.
53 InternalVarCheckLoadOption (
54 IN VAR_CHECK_VARIABLE_PROPERTY
*VariablePropery
,
59 UINT16 FilePathListLength
;
61 EFI_DEVICE_PATH_PROTOCOL
*FilePathList
;
63 FilePathListLength
= *((UINT16
*) ((UINTN
) Data
+ sizeof (UINT32
)));
68 Description
= (CHAR16
*) ((UINTN
) Data
+ sizeof (UINT32
) + sizeof (UINT16
));
69 while (Description
< (CHAR16
*) ((UINTN
) Data
+ DataSize
)) {
70 if (*Description
== L
'\0') {
75 if ((UINTN
) Description
>= ((UINTN
) Data
+ DataSize
)) {
76 return EFI_INVALID_PARAMETER
;
83 FilePathList
= (EFI_DEVICE_PATH_PROTOCOL
*) Description
;
84 if ((UINTN
) FilePathList
> (MAX_ADDRESS
- FilePathListLength
)) {
85 return EFI_INVALID_PARAMETER
;
87 if (((UINTN
) FilePathList
+ FilePathListLength
) > ((UINTN
) Data
+ DataSize
)) {
88 return EFI_INVALID_PARAMETER
;
90 if (FilePathListLength
< sizeof (EFI_DEVICE_PATH_PROTOCOL
)) {
91 return EFI_INVALID_PARAMETER
;
93 if (!IsDevicePathValid (FilePathList
, FilePathListLength
)) {
94 return EFI_INVALID_PARAMETER
;
101 Internal check for key option.
103 @param[in] VariablePropery Pointer to variable property.
104 @param[in] DataSize Data size.
105 @param[in] Data Pointer to data buffer.
107 @retval EFI_SUCCESS The SetVariable check result was success.
108 @retval EFI_INVALID_PARAMETER The data buffer is not a valid key option.
113 InternalVarCheckKeyOption (
114 IN VAR_CHECK_VARIABLE_PROPERTY
*VariablePropery
,
119 if (((DataSize
- sizeof (EFI_KEY_OPTION
)) % sizeof (EFI_INPUT_KEY
)) != 0) {
120 return EFI_INVALID_PARAMETER
;
127 Internal check for device path.
129 @param[in] VariablePropery Pointer to variable property.
130 @param[in] DataSize Data size.
131 @param[in] Data Pointer to data buffer.
133 @retval EFI_SUCCESS The SetVariable check result was success.
134 @retval EFI_INVALID_PARAMETER The data buffer is not a valid device path.
139 InternalVarCheckDevicePath (
140 IN VAR_CHECK_VARIABLE_PROPERTY
*VariablePropery
,
145 if (!IsDevicePathValid ((EFI_DEVICE_PATH_PROTOCOL
*) Data
, DataSize
)) {
146 return EFI_INVALID_PARAMETER
;
152 Internal check for ASCII string.
154 @param[in] VariablePropery Pointer to variable property.
155 @param[in] DataSize Data size.
156 @param[in] Data Pointer to data buffer.
158 @retval EFI_SUCCESS The SetVariable check result was success.
159 @retval EFI_INVALID_PARAMETER The data buffer is not a Null-terminated ASCII string.
164 InternalVarCheckAsciiString (
165 IN VAR_CHECK_VARIABLE_PROPERTY
*VariablePropery
,
173 String
= (CHAR8
*) Data
;
174 if (String
[DataSize
- 1] == '\0') {
177 for (Index
= 1; Index
< DataSize
&& (String
[DataSize
- 1 - Index
] != '\0'); Index
++);
178 if (Index
== DataSize
) {
179 return EFI_INVALID_PARAMETER
;
186 Internal check for size array.
188 @param[in] VariablePropery Pointer to variable property.
189 @param[in] DataSize Data size.
190 @param[in] Data Pointer to data buffer.
192 @retval EFI_SUCCESS The SetVariable check result was success.
193 @retval EFI_INVALID_PARAMETER The DataSize is not size array.
198 InternalVarCheckSizeArray (
199 IN VAR_CHECK_VARIABLE_PROPERTY
*VariablePropery
,
204 if ((DataSize
% VariablePropery
->MinSize
) != 0) {
205 return EFI_INVALID_PARAMETER
;
211 // To prevent name collisions with possible future globally defined variables,
212 // other internal firmware data variables that are not defined here must be
213 // saved with a unique VendorGuid other than EFI_GLOBAL_VARIABLE or
214 // any other GUID defined by the UEFI Specification. Implementations must
215 // only permit the creation of variables with a UEFI Specification-defined
216 // VendorGuid when these variables are documented in the UEFI Specification.
218 UEFI_DEFINED_VARIABLE_ENTRY mGlobalVariableList
[] = {
220 EFI_LANG_CODES_VARIABLE_NAME
,
222 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
224 VARIABLE_ATTRIBUTE_BS_RT
,
228 InternalVarCheckAsciiString
231 EFI_LANG_VARIABLE_NAME
,
233 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
235 VARIABLE_ATTRIBUTE_NV_BS_RT
,
239 InternalVarCheckAsciiString
242 EFI_TIME_OUT_VARIABLE_NAME
,
244 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
246 VARIABLE_ATTRIBUTE_NV_BS_RT
,
253 EFI_PLATFORM_LANG_CODES_VARIABLE_NAME
,
255 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
257 VARIABLE_ATTRIBUTE_BS_RT
,
261 InternalVarCheckAsciiString
264 EFI_PLATFORM_LANG_VARIABLE_NAME
,
266 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
268 VARIABLE_ATTRIBUTE_NV_BS_RT
,
272 InternalVarCheckAsciiString
275 EFI_CON_IN_VARIABLE_NAME
,
277 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
279 VARIABLE_ATTRIBUTE_NV_BS_RT
,
280 sizeof (EFI_DEVICE_PATH_PROTOCOL
),
283 InternalVarCheckDevicePath
286 EFI_CON_OUT_VARIABLE_NAME
,
288 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
290 VARIABLE_ATTRIBUTE_NV_BS_RT
,
291 sizeof (EFI_DEVICE_PATH_PROTOCOL
),
294 InternalVarCheckDevicePath
297 EFI_ERR_OUT_VARIABLE_NAME
,
299 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
301 VARIABLE_ATTRIBUTE_NV_BS_RT
,
302 sizeof (EFI_DEVICE_PATH_PROTOCOL
),
305 InternalVarCheckDevicePath
308 EFI_CON_IN_DEV_VARIABLE_NAME
,
310 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
312 VARIABLE_ATTRIBUTE_BS_RT
,
313 sizeof (EFI_DEVICE_PATH_PROTOCOL
),
316 InternalVarCheckDevicePath
319 EFI_CON_OUT_DEV_VARIABLE_NAME
,
321 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
323 VARIABLE_ATTRIBUTE_BS_RT
,
324 sizeof (EFI_DEVICE_PATH_PROTOCOL
),
327 InternalVarCheckDevicePath
330 EFI_ERR_OUT_DEV_VARIABLE_NAME
,
332 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
334 VARIABLE_ATTRIBUTE_BS_RT
,
335 sizeof (EFI_DEVICE_PATH_PROTOCOL
),
338 InternalVarCheckDevicePath
341 EFI_BOOT_ORDER_VARIABLE_NAME
,
343 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
345 VARIABLE_ATTRIBUTE_NV_BS_RT
,
349 InternalVarCheckSizeArray
352 EFI_BOOT_NEXT_VARIABLE_NAME
,
354 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
356 VARIABLE_ATTRIBUTE_NV_BS_RT
,
363 EFI_BOOT_CURRENT_VARIABLE_NAME
,
365 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
367 VARIABLE_ATTRIBUTE_BS_RT
,
374 EFI_BOOT_OPTION_SUPPORT_VARIABLE_NAME
,
376 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
378 VARIABLE_ATTRIBUTE_BS_RT
,
385 EFI_DRIVER_ORDER_VARIABLE_NAME
,
387 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
389 VARIABLE_ATTRIBUTE_NV_BS_RT
,
393 InternalVarCheckSizeArray
396 EFI_SYS_PREP_ORDER_VARIABLE_NAME
,
398 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
400 VARIABLE_ATTRIBUTE_NV_BS_RT
,
404 InternalVarCheckSizeArray
407 EFI_HW_ERR_REC_SUPPORT_VARIABLE_NAME
,
409 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
411 VARIABLE_ATTRIBUTE_NV_BS_RT
,
420 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
421 VAR_CHECK_VARIABLE_PROPERTY_READ_ONLY
,
422 VARIABLE_ATTRIBUTE_BS_RT
,
431 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
433 VARIABLE_ATTRIBUTE_BS_RT
,
440 EFI_DEPLOYED_MODE_NAME
,
442 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
444 VARIABLE_ATTRIBUTE_BS_RT
,
451 EFI_KEY_EXCHANGE_KEY_NAME
,
453 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
455 VARIABLE_ATTRIBUTE_NV_BS_RT_AT
,
462 EFI_PLATFORM_KEY_NAME
,
464 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
466 VARIABLE_ATTRIBUTE_NV_BS_RT_AT
,
473 EFI_SIGNATURE_SUPPORT_NAME
,
475 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
476 VAR_CHECK_VARIABLE_PROPERTY_READ_ONLY
,
477 VARIABLE_ATTRIBUTE_BS_RT
,
481 InternalVarCheckSizeArray
484 EFI_SECURE_BOOT_MODE_NAME
,
486 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
487 VAR_CHECK_VARIABLE_PROPERTY_READ_ONLY
,
488 VARIABLE_ATTRIBUTE_BS_RT
,
495 EFI_KEK_DEFAULT_VARIABLE_NAME
,
497 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
498 VAR_CHECK_VARIABLE_PROPERTY_READ_ONLY
,
499 VARIABLE_ATTRIBUTE_BS_RT
,
506 EFI_PK_DEFAULT_VARIABLE_NAME
,
508 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
509 VAR_CHECK_VARIABLE_PROPERTY_READ_ONLY
,
510 VARIABLE_ATTRIBUTE_BS_RT
,
517 EFI_DB_DEFAULT_VARIABLE_NAME
,
519 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
520 VAR_CHECK_VARIABLE_PROPERTY_READ_ONLY
,
521 VARIABLE_ATTRIBUTE_BS_RT
,
528 EFI_DBX_DEFAULT_VARIABLE_NAME
,
530 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
531 VAR_CHECK_VARIABLE_PROPERTY_READ_ONLY
,
532 VARIABLE_ATTRIBUTE_BS_RT
,
539 EFI_DBT_DEFAULT_VARIABLE_NAME
,
541 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
542 VAR_CHECK_VARIABLE_PROPERTY_READ_ONLY
,
543 VARIABLE_ATTRIBUTE_BS_RT
,
550 EFI_OS_INDICATIONS_SUPPORT_VARIABLE_NAME
,
552 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
554 VARIABLE_ATTRIBUTE_BS_RT
,
561 EFI_OS_INDICATIONS_VARIABLE_NAME
,
563 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
565 VARIABLE_ATTRIBUTE_NV_BS_RT
,
572 EFI_VENDOR_KEYS_VARIABLE_NAME
,
574 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
575 VAR_CHECK_VARIABLE_PROPERTY_READ_ONLY
,
576 VARIABLE_ATTRIBUTE_BS_RT
,
584 UEFI_DEFINED_VARIABLE_ENTRY mGlobalVariableList2
[] = {
588 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
590 VARIABLE_ATTRIBUTE_NV_BS_RT
,
591 sizeof (UINT32
) + sizeof (UINT16
),
594 InternalVarCheckLoadOption
599 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
601 VARIABLE_ATTRIBUTE_NV_BS_RT
,
602 sizeof (UINT32
) + sizeof (UINT16
),
605 InternalVarCheckLoadOption
610 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
612 VARIABLE_ATTRIBUTE_NV_BS_RT
,
613 sizeof (UINT32
) + sizeof (UINT16
),
616 InternalVarCheckLoadOption
621 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
623 VARIABLE_ATTRIBUTE_NV_BS_RT
,
624 sizeof (EFI_KEY_OPTION
),
625 sizeof (EFI_KEY_OPTION
) + 3 * sizeof (EFI_INPUT_KEY
)
627 InternalVarCheckKeyOption
630 L
"PlatformRecovery####",
632 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
634 VARIABLE_ATTRIBUTE_BS_RT
,
635 sizeof (UINT32
) + sizeof (UINT16
),
638 InternalVarCheckLoadOption
643 // EFI_IMAGE_SECURITY_DATABASE_GUID
645 UEFI_DEFINED_VARIABLE_ENTRY mImageSecurityVariableList
[] = {
647 EFI_IMAGE_SECURITY_DATABASE
,
649 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
651 VARIABLE_ATTRIBUTE_NV_BS_RT_AT
,
658 EFI_IMAGE_SECURITY_DATABASE1
,
660 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
662 VARIABLE_ATTRIBUTE_NV_BS_RT_AT
,
669 EFI_IMAGE_SECURITY_DATABASE2
,
671 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
673 VARIABLE_ATTRIBUTE_NV_BS_RT_AT
,
682 // EFI_HARDWARE_ERROR_VARIABLE
684 UEFI_DEFINED_VARIABLE_ENTRY mHwErrRecVariable
= {
687 VAR_CHECK_VARIABLE_PROPERTY_REVISION
,
689 VARIABLE_ATTRIBUTE_NV_BS_RT_HR
,
696 EFI_GUID
*mUefiDefinedGuid
[] = {
697 &gEfiGlobalVariableGuid
,
698 &gEfiImageSecurityDatabaseGuid
,
699 &gEfiHardwareErrorVariableGuid
703 Check if a Unicode character is a hexadecimal character.
705 This function checks if a Unicode character is a
706 hexadecimal character. The valid hexadecimal character is
707 L'0' to L'9', L'a' to L'f', or L'A' to L'F'.
710 @param[in] Char The character to check against.
712 @retval TRUE If the Char is a hexadecmial character.
713 @retval FALSE If the Char is not a hexadecmial character.
718 VarCheckUefiIsHexaDecimalDigitCharacter (
722 return (BOOLEAN
) ((Char
>= L
'0' && Char
<= L
'9') || (Char
>= L
'A' && Char
<= L
'F') || (Char
>= L
'a' && Char
<= L
'f'));
727 This code checks if variable is hardware error record variable or not.
729 According to UEFI spec, hardware error record variable should use the EFI_HARDWARE_ERROR_VARIABLE VendorGuid
730 and have the L"HwErrRec####" name convention, #### is a printed hex value and no 0x or h is included in the hex value.
732 @param[in] VariableName Pointer to variable name.
733 @param[in] VendorGuid Variable Vendor Guid.
735 @retval TRUE Variable is hardware error record variable.
736 @retval FALSE Variable is not hardware error record variable.
742 IN CHAR16
*VariableName
,
743 IN EFI_GUID
*VendorGuid
746 if (!CompareGuid (VendorGuid
, &gEfiHardwareErrorVariableGuid
) ||
747 (StrLen (VariableName
) != StrLen (L
"HwErrRec####")) ||
748 (StrnCmp(VariableName
, L
"HwErrRec", StrLen (L
"HwErrRec")) != 0) ||
749 !VarCheckUefiIsHexaDecimalDigitCharacter (VariableName
[0x8]) ||
750 !VarCheckUefiIsHexaDecimalDigitCharacter (VariableName
[0x9]) ||
751 !VarCheckUefiIsHexaDecimalDigitCharacter (VariableName
[0xA]) ||
752 !VarCheckUefiIsHexaDecimalDigitCharacter (VariableName
[0xB])) {
760 Get UEFI defined var check function.
762 @param[in] VariableName Pointer to variable name.
763 @param[in] VendorGuid Pointer to variable vendor GUID.
764 @param[out] VariableProperty Pointer to variable property.
766 @return Internal var check function, NULL if no specific check function.
769 INTERNAL_VAR_CHECK_FUNCTION
770 GetUefiDefinedVarCheckFunction (
771 IN CHAR16
*VariableName
,
772 IN EFI_GUID
*VendorGuid
,
773 OUT VAR_CHECK_VARIABLE_PROPERTY
**VariableProperty
779 if (CompareGuid (VendorGuid
, &gEfiGlobalVariableGuid
)) {
781 // Try list 1, exactly match.
783 for (Index
= 0; Index
< sizeof (mGlobalVariableList
)/sizeof (mGlobalVariableList
[0]); Index
++) {
784 if (StrCmp (mGlobalVariableList
[Index
].Name
, VariableName
) == 0) {
785 *VariableProperty
= &(mGlobalVariableList
[Index
].VariableProperty
);
786 return mGlobalVariableList
[Index
].CheckFunction
;
793 NameLength
= StrLen (VariableName
) - 4;
794 for (Index
= 0; Index
< sizeof (mGlobalVariableList2
)/sizeof (mGlobalVariableList2
[0]); Index
++) {
795 if ((StrLen (VariableName
) == StrLen (mGlobalVariableList2
[Index
].Name
)) &&
796 (StrnCmp (VariableName
, mGlobalVariableList2
[Index
].Name
, NameLength
) == 0) &&
797 VarCheckUefiIsHexaDecimalDigitCharacter (VariableName
[NameLength
]) &&
798 VarCheckUefiIsHexaDecimalDigitCharacter (VariableName
[NameLength
+ 1]) &&
799 VarCheckUefiIsHexaDecimalDigitCharacter (VariableName
[NameLength
+ 2]) &&
800 VarCheckUefiIsHexaDecimalDigitCharacter (VariableName
[NameLength
+ 3])) {
801 *VariableProperty
= &(mGlobalVariableList2
[Index
].VariableProperty
);
802 return mGlobalVariableList2
[Index
].CheckFunction
;
811 SetVariable check handler UEFI defined.
813 @param[in] VariableName Name of Variable to set.
814 @param[in] VendorGuid Variable vendor GUID.
815 @param[in] Attributes Attribute value of the variable.
816 @param[in] DataSize Size of Data to set.
817 @param[in] Data Data pointer.
819 @retval EFI_SUCCESS The SetVariable check result was success.
820 @retval EFI_INVALID_PARAMETER An invalid combination of attribute bits, name, GUID,
821 DataSize and Data value was supplied.
822 @retval EFI_WRITE_PROTECTED The variable in question is read-only.
827 SetVariableCheckHandlerUefiDefined (
828 IN CHAR16
*VariableName
,
829 IN EFI_GUID
*VendorGuid
,
830 IN UINT32 Attributes
,
837 VAR_CHECK_VARIABLE_PROPERTY Property
;
838 VAR_CHECK_VARIABLE_PROPERTY
*VarCheckProperty
;
839 INTERNAL_VAR_CHECK_FUNCTION VarCheckFunction
;
841 if ((((Attributes
& EFI_VARIABLE_APPEND_WRITE
) == 0) && (DataSize
== 0)) || (Attributes
== 0)) {
843 // Do not check delete variable.
848 if ((Attributes
& EFI_VARIABLE_HARDWARE_ERROR_RECORD
) == EFI_VARIABLE_HARDWARE_ERROR_RECORD
) {
849 if (!IsHwErrRecVariable (VariableName
, VendorGuid
)) {
850 return EFI_INVALID_PARAMETER
;
854 for (Index
= 0; Index
< sizeof (mUefiDefinedGuid
)/sizeof (mUefiDefinedGuid
[0]); Index
++) {
855 if (CompareGuid (VendorGuid
, mUefiDefinedGuid
[Index
])) {
856 if (VarCheckLibVariablePropertyGet (VariableName
, VendorGuid
, &Property
) == EFI_NOT_FOUND
) {
858 // To prevent name collisions with possible future globally defined variables,
859 // other internal firmware data variables that are not defined here must be
860 // saved with a unique VendorGuid other than EFI_GLOBAL_VARIABLE or
861 // any other GUID defined by the UEFI Specification. Implementations must
862 // only permit the creation of variables with a UEFI Specification-defined
863 // VendorGuid when these variables are documented in the UEFI Specification.
865 DEBUG ((EFI_D_INFO
, "UEFI Variable Check fail %r - %s not in %g namespace\n", EFI_INVALID_PARAMETER
, VariableName
, VendorGuid
));
866 return EFI_INVALID_PARAMETER
;
875 VarCheckProperty
= NULL
;
876 VarCheckFunction
= GetUefiDefinedVarCheckFunction (VariableName
, VendorGuid
, &VarCheckProperty
);
877 if (VarCheckFunction
!= NULL
) {
878 Status
= VarCheckFunction (
883 if (EFI_ERROR (Status
)) {
884 DEBUG ((EFI_D_INFO
, "UEFI Variable Check function fail %r - %g:%s\n", Status
, VendorGuid
, VariableName
));
893 Variable property set for UEFI defined variables.
897 VariablePropertySetUefiDefined (
904 // EFI_GLOBAL_VARIABLE
906 for (Index
= 0; Index
< sizeof (mGlobalVariableList
)/sizeof (mGlobalVariableList
[0]); Index
++) {
907 VarCheckLibVariablePropertySet (
908 mGlobalVariableList
[Index
].Name
,
909 &gEfiGlobalVariableGuid
,
910 &mGlobalVariableList
[Index
].VariableProperty
913 for (Index
= 0; Index
< sizeof (mGlobalVariableList2
)/sizeof (mGlobalVariableList2
[0]); Index
++) {
914 VarCheckLibVariablePropertySet (
915 mGlobalVariableList2
[Index
].Name
,
916 &gEfiGlobalVariableGuid
,
917 &mGlobalVariableList2
[Index
].VariableProperty
922 // EFI_IMAGE_SECURITY_DATABASE_GUID
924 for (Index
= 0; Index
< sizeof (mImageSecurityVariableList
)/sizeof (mImageSecurityVariableList
[0]); Index
++) {
925 VarCheckLibVariablePropertySet (
926 mImageSecurityVariableList
[Index
].Name
,
927 &gEfiImageSecurityDatabaseGuid
,
928 &mImageSecurityVariableList
[Index
].VariableProperty
933 // EFI_HARDWARE_ERROR_VARIABLE
935 VarCheckLibVariablePropertySet (
936 mHwErrRecVariable
.Name
,
937 &gEfiHardwareErrorVariableGuid
,
938 &mHwErrRecVariable
.VariableProperty
943 Constructor function of VarCheckUefiLib to set property and
944 register SetVariable check handler for UEFI defined variables.
946 @param[in] ImageHandle The firmware allocated handle for the EFI image.
947 @param[in] SystemTable A pointer to the EFI System Table.
949 @retval EFI_SUCCESS The constructor executed correctly.
954 VarCheckUefiLibNullClassConstructor (
955 IN EFI_HANDLE ImageHandle
,
956 IN EFI_SYSTEM_TABLE
*SystemTable
959 VariablePropertySetUefiDefined ();
960 VarCheckLibRegisterSetVariableCheckHandler (SetVariableCheckHandlerUefiDefined
);