OpenCore  1.0.4
OpenCore Bootloader
Loading...
Searching...
No Matches
NvramKeyInfo.c
Go to the documentation of this file.
1
16#include "NvramKeyInfo.h"
17
18STATIC
19BOOLEAN
21 IN CONST VOID *Value,
22 IN UINT32 ValueSize
23 )
24{
25 (VOID)Value;
26
27 return ValueSize == sizeof (UINT8);
28}
29
30STATIC
31BOOLEAN
33 IN CONST VOID *Value,
34 IN UINT32 ValueSize
35 )
36{
37 (VOID)Value;
38
39 return ValueSize == sizeof (UINT32);
40}
41
42STATIC
43BOOLEAN
45 IN CONST VOID *Value,
46 IN UINT32 ValueSize
47 )
48{
49 (VOID)Value;
50
51 return ValueSize == sizeof (UINT64);
52}
53
54STATIC
55BOOLEAN
57 IN CONST VOID *Value,
58 IN UINT32 ValueSize
59 )
60{
61 UINTN Index;
62 CONST UINT8 *UIScaleValue;
63 STATIC CONST UINT8 AllowedUIScaleValue[] = {
64 0x01,
65 0x02
66 };
67
68 UIScaleValue = (CONST UINT8 *)Value;
69
70 if (!ValidateNvramKeySize8 (NULL, ValueSize)) {
71 return FALSE;
72 }
73
74 for (Index = 0; Index < ARRAY_SIZE (AllowedUIScaleValue); ++Index) {
75 if (*UIScaleValue == AllowedUIScaleValue[Index]) {
76 return TRUE;
77 }
78 }
79
80 return FALSE;
81}
82
83STATIC
84BOOLEAN
86 IN CONST VOID *Value,
87 IN UINT32 ValueSize
88 )
89{
90 UINTN Index;
91 CONST UINT8 *NvdaDrvValue;
92 STATIC CONST UINT8 AllowedNvdaDrvValue[] = {
93 0x30,
94 0x31
95 };
96
97 NvdaDrvValue = (CONST UINT8 *)Value;
98
99 if (!ValidateNvramKeySize8 (NULL, ValueSize)) {
100 return FALSE;
101 }
102
103 for (Index = 0; Index < ARRAY_SIZE (AllowedNvdaDrvValue); ++Index) {
104 if (*NvdaDrvValue == AllowedNvdaDrvValue[Index]) {
105 return TRUE;
106 }
107 }
108
109 return FALSE;
110}
111
112STATIC
113BOOLEAN
115 IN CONST VOID *Value,
116 IN UINT32 ValueSize
117 )
118{
119 CONST CHAR8 *BootArgsValue;
120
121 BootArgsValue = (CONST CHAR8 *)Value;
122
123 return OcAsciiStringNPrintable (BootArgsValue, ValueSize);
124}
125
126STATIC
127BOOLEAN
129 IN CONST VOID *Value,
130 IN UINT32 ValueSize
131 )
132{
133 //
134 // bootercfg is similar to boot-args.
135 //
136 return ValidateBootArgs (Value, ValueSize);
137}
138
139STATIC
140BOOLEAN
142 IN CONST VOID *Value,
143 IN UINT32 ValueSize
144 )
145{
146 //
147 // Cast Value to UINT8 * to ensure alignment.
148 //
149 CONST UINT8 *DefaultBackgroundColorValue;
150
151 DefaultBackgroundColorValue = (CONST UINT8 *)Value;
152
153 //
154 // Even if casted to UINT8 *, DefaultBackgroundColor is still 32-bit.
155 //
156 if (!ValidateNvramKeySize32 (NULL, ValueSize)) {
157 return FALSE;
158 }
159
160 //
161 // The last byte must be zero.
162 //
163 return DefaultBackgroundColorValue[3] == 0U;
164}
165
167 { "nvda_drv", ValidateNvdaDrv },
168 { "boot-args", ValidateBootArgs },
169 { "bootercfg", ValidateBooterCfg },
170 { "csr-active-config", ValidateNvramKeySize32 },
171 { "StartupMute", ValidateNvramKeySize8 },
172 { "SystemAudioVolume", ValidateNvramKeySize8 },
173};
174
176 { "UIScale", ValidateUIScale },
177 { "FirmwareFeatures", ValidateNvramKeySize32 },
178 { "ExtendedFirmwareFeatures", ValidateNvramKeySize64 },
179 { "FirmwareFeaturesMask", ValidateNvramKeySize32 },
180 { "ExtendedFirmwareFeaturesMask", ValidateNvramKeySize64 },
181 { "DefaultBackgroundColor", ValidateDefaultBackgroundColor },
182};
183
189
190BOOLEAN mHasNvramUIScale = FALSE;
#define ARRAY_SIZE(Array)
Definition AppleMacEfi.h:34
EFI_GUID gAppleBootVariableGuid
EFI_GUID gAppleVendorVariableGuid
STATIC BOOLEAN ValidateNvdaDrv(IN CONST VOID *Value, IN UINT32 ValueSize)
STATIC BOOLEAN ValidateNvramKeySize32(IN CONST VOID *Value, IN UINT32 ValueSize)
STATIC BOOLEAN ValidateBooterCfg(IN CONST VOID *Value, IN UINT32 ValueSize)
STATIC BOOLEAN ValidateUIScale(IN CONST VOID *Value, IN UINT32 ValueSize)
STATIC BOOLEAN ValidateBootArgs(IN CONST VOID *Value, IN UINT32 ValueSize)
STATIC BOOLEAN ValidateNvramKeySize8(IN CONST VOID *Value, IN UINT32 ValueSize)
UINTN mGUIDMapsCount
STATIC BOOLEAN ValidateDefaultBackgroundColor(IN CONST VOID *Value, IN UINT32 ValueSize)
STATIC BOOLEAN ValidateNvramKeySize64(IN CONST VOID *Value, IN UINT32 ValueSize)
STATIC NVRAM_KEY_MAP mAppleVendorVariableGuidKeyMaps[]
NVRAM_GUID_MAP mGUIDMaps[]
STATIC NVRAM_KEY_MAP mAppleBootVariableGuidKeyMaps[]
BOOLEAN mHasNvramUIScale
BOOLEAN OcAsciiStringNPrintable(IN CONST CHAR8 *String, IN UINTN Number)
Definition OcAsciiLib.c:418