mirror of
https://xff.cz/git/u-boot/
synced 2025-09-01 08:42:12 +02:00
efi_loader: read-only AuditMode and DeployedMode
Set the read only property of the UEFI variables AuditMode and DeployedMode conforming to the UEFI specification. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
This commit is contained in:
@@ -183,32 +183,36 @@ static const char *parse_attr(const char *str, u32 *attrp, u64 *timep)
|
|||||||
static efi_status_t efi_set_secure_state(u8 secure_boot, u8 setup_mode,
|
static efi_status_t efi_set_secure_state(u8 secure_boot, u8 setup_mode,
|
||||||
u8 audit_mode, u8 deployed_mode)
|
u8 audit_mode, u8 deployed_mode)
|
||||||
{
|
{
|
||||||
u32 attributes;
|
|
||||||
efi_status_t ret;
|
efi_status_t ret;
|
||||||
|
const u32 attributes_ro = EFI_VARIABLE_BOOTSERVICE_ACCESS |
|
||||||
|
EFI_VARIABLE_RUNTIME_ACCESS |
|
||||||
|
EFI_VARIABLE_READ_ONLY;
|
||||||
|
const u32 attributes_rw = EFI_VARIABLE_BOOTSERVICE_ACCESS |
|
||||||
|
EFI_VARIABLE_RUNTIME_ACCESS;
|
||||||
|
|
||||||
attributes = EFI_VARIABLE_BOOTSERVICE_ACCESS |
|
|
||||||
EFI_VARIABLE_RUNTIME_ACCESS |
|
|
||||||
EFI_VARIABLE_READ_ONLY;
|
|
||||||
ret = efi_set_variable_int(L"SecureBoot", &efi_global_variable_guid,
|
ret = efi_set_variable_int(L"SecureBoot", &efi_global_variable_guid,
|
||||||
attributes, sizeof(secure_boot),
|
attributes_ro, sizeof(secure_boot),
|
||||||
&secure_boot, false);
|
&secure_boot, false);
|
||||||
if (ret != EFI_SUCCESS)
|
if (ret != EFI_SUCCESS)
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
ret = efi_set_variable_int(L"SetupMode", &efi_global_variable_guid,
|
ret = efi_set_variable_int(L"SetupMode", &efi_global_variable_guid,
|
||||||
attributes, sizeof(setup_mode),
|
attributes_ro, sizeof(setup_mode),
|
||||||
&setup_mode, false);
|
&setup_mode, false);
|
||||||
if (ret != EFI_SUCCESS)
|
if (ret != EFI_SUCCESS)
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
ret = efi_set_variable_int(L"AuditMode", &efi_global_variable_guid,
|
ret = efi_set_variable_int(L"AuditMode", &efi_global_variable_guid,
|
||||||
attributes, sizeof(audit_mode),
|
audit_mode || setup_mode ?
|
||||||
&audit_mode, false);
|
attributes_ro : attributes_rw,
|
||||||
|
sizeof(audit_mode), &audit_mode, false);
|
||||||
if (ret != EFI_SUCCESS)
|
if (ret != EFI_SUCCESS)
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
ret = efi_set_variable_int(L"DeployedMode",
|
ret = efi_set_variable_int(L"DeployedMode",
|
||||||
&efi_global_variable_guid, attributes,
|
&efi_global_variable_guid,
|
||||||
|
audit_mode || deployed_mode || setup_mode ?
|
||||||
|
attributes_ro : attributes_rw,
|
||||||
sizeof(deployed_mode), &deployed_mode,
|
sizeof(deployed_mode), &deployed_mode,
|
||||||
false);
|
false);
|
||||||
err:
|
err:
|
||||||
|
Reference in New Issue
Block a user