]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
boot: Add efivar_get_boolean_u8()
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Sun, 31 Jan 2021 10:56:21 +0000 (10:56 +0000)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Tue, 2 Feb 2021 21:03:33 +0000 (21:03 +0000)
src/boot/efi/secure-boot.c
src/boot/efi/util.c
src/boot/efi/util.h

index 07d6252e27b00c4e762d1c3b5b0f784a31d2e072..cacf3b6a7b834dd72986505341ea18520a1c95ec 100644 (file)
@@ -4,11 +4,10 @@
 #include "util.h"
 
 BOOLEAN secure_boot_enabled(void) {
-        _cleanup_freepool_ CHAR8 *b = NULL;
-        UINTN size;
+        BOOLEAN secure;
+        EFI_STATUS err;
 
-        if (efivar_get_raw(EFI_GLOBAL_GUID, L"SecureBoot", &b, &size) == EFI_SUCCESS)
-                return *b > 0;
+        err = efivar_get_boolean_u8(EFI_GLOBAL_GUID, L"SecureBoot", &secure);
 
-        return FALSE;
+        return !EFI_ERROR(err) && secure;
 }
index c795bd6dbc4bafe416e489efe03b0dffaf05e0c8..9019cd7a2525a7f66a58e3323ded91a2e9750e00 100644 (file)
@@ -166,6 +166,18 @@ EFI_STATUS efivar_get_raw(const EFI_GUID *vendor, const CHAR16 *name, CHAR8 **bu
         return err;
 }
 
+EFI_STATUS efivar_get_boolean_u8(const EFI_GUID *vendor, const CHAR16 *name, BOOLEAN *ret) {
+        _cleanup_freepool_ CHAR8 *b = NULL;
+        UINTN size;
+        EFI_STATUS err;
+
+        err = efivar_get_raw(vendor, name, &b, &size);
+        if (!EFI_ERROR(err))
+                *ret = *b > 0;
+
+        return err;
+}
+
 VOID efivar_set_time_usec(const EFI_GUID *vendor, CHAR16 *name, UINT64 usec) {
         CHAR16 str[32];
 
index 92c3a0a58481b525839b45a2b45f5f6839b73374..07882383d4de2a4de818c44cfc6b8ca2023ede03 100644 (file)
@@ -29,6 +29,7 @@ VOID efivar_set_time_usec(const EFI_GUID *vendor, CHAR16 *name, UINT64 usec);
 EFI_STATUS efivar_get(const EFI_GUID *vendor, const CHAR16 *name, CHAR16 **value);
 EFI_STATUS efivar_get_raw(const EFI_GUID *vendor, const CHAR16 *name, CHAR8 **buffer, UINTN *size);
 EFI_STATUS efivar_get_int(const EFI_GUID *vendor, const CHAR16 *name, UINTN *i);
+EFI_STATUS efivar_get_boolean_u8(const EFI_GUID *vendor, const CHAR16 *name, BOOLEAN *ret);
 
 CHAR8 *strchra(CHAR8 *s, CHAR8 c);
 CHAR16 *stra_to_path(CHAR8 *stra);