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);
}
static int print_efi_option(uint16_t id, bool in_order) {
- char *title = NULL;
- char *path = NULL;
+ _cleanup_free_ char *title = NULL;
+ _cleanup_free_ char *path = NULL;
sd_id128_t partition;
bool active;
int r = 0;
r = efi_get_boot_option(id, &title, &partition, &path, &active);
if (r < 0)
- goto finish;
+ return r;
/* print only configured entries with partition information */
if (!path || sd_id128_equal(partition, SD_ID128_NULL))
printf(" File: └─%s\n", path);
printf("\n");
-finish:
- free(title);
- free(path);
- return r;
+ return 0;
}
static int status_variables(void) {
}
static int remove_from_order(uint16_t slot) {
- uint16_t *order = NULL;
+ _cleanup_free_ uint16_t *order = NULL;
int n_order;
int i;
int err = 0;
break;
}
- free(order);
return err;
}
int q;
int r;
- r = parse_argv(argc, argv);
- if (r <= 0)
- goto finish;
-
if (argv[optind]) {
for (i = 0; i < ELEMENTSOF(verbs); i++) {
if (!streq(argv[optind], verbs[i].verb))
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");