- if (*marker == '\0')
- relative = -1;
- else {
- r = safe_atoi(marker, &relative);
- if (r < 0) {
- log_error("Failed to parse relative boot ID number '%s'", marker);
- return -EINVAL;
- }
- }
+ if (strlen(arg_boot_descriptor) >= 32) {
+ char tmp = arg_boot_descriptor[32];
+ arg_boot_descriptor[32] = '\0';
+ r = sd_id128_from_string(arg_boot_descriptor, &boot_id);
+ arg_boot_descriptor[32] = tmp;
+
+ if (r < 0) {
+ log_error("Failed to parse boot ID '%.32s': %s",
+ arg_boot_descriptor, strerror(-r));
+ return r;