chiark / gitweb /
boot: efi - add config option to disable the command line editor
[elogind.git] / src / boot / bootctl.c
index fb568bebbe7269f174b1bf4b62ab0c1de3366bc0..ae467ca35c9cc569f3626c95835224a584b4b1a2 100644 (file)
@@ -177,7 +177,13 @@ static int verify_esp(const char *p, uint32_t *part, uint64_t *pstart, uint64_t
                 fprintf(stderr, "Failed to probe partition entry UUID %s: %s\n", p, strerror(-r));
                 goto fail;
         }
-        sd_id128_from_string(v, uuid);
+
+        r = sd_id128_from_string(v, uuid);
+        if (r < 0) {
+                fprintf(stderr, "Partition %s has invalid UUID: %s\n", p, v);
+                r = -EIO;
+                goto fail;
+        }
 
         errno = 0;
         r = blkid_probe_lookup_value(b, "PART_ENTRY_NUMBER", &v, NULL);
@@ -1323,8 +1329,8 @@ static int bootctl_main(int argc, char*argv[]) {
                 efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderFirmwareType", &fw_type);
                 efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderFirmwareInfo", &fw_info);
                 efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderInfo", &loader);
-                efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderImageIdentifier", &loader_path);
-                efi_tilt_backslashes(loader_path);
+                if (efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderImageIdentifier", &loader_path) > 0)
+                        efi_tilt_backslashes(loader_path);
                 efi_loader_get_device_part_uuid(&loader_part_uuid);
 
                 printf("System:\n");