diff --git a/src/shared/specifier.c b/src/shared/specifier.c index 65e555f716..a4a4017f06 100644 --- a/src/shared/specifier.c +++ b/src/shared/specifier.c @@ -187,19 +187,9 @@ int specifier_machine_id(char specifier, const void *data, const char *root, con assert(ret); - if (root) { - _cleanup_close_ int fd = -EBADF; - - fd = chase_and_open("/etc/machine-id", root, CHASE_PREFIX_ROOT, O_RDONLY|O_CLOEXEC|O_NOCTTY, NULL); - if (fd < 0) - /* Translate error for missing os-release file to EUNATCH. */ - return fd == -ENOENT ? -EUNATCH : fd; - - r = id128_read_fd(fd, ID128_FORMAT_PLAIN, &id); - } else - r = sd_id128_get_machine(&id); - if (r < 0) - return r; + r = id128_get_machine(root, &id); + if (r < 0) /* Translate error for missing /etc/machine-id file to EUNATCH. */ + return r == -ENOENT ? -EUNATCH : r; return specifier_id128(specifier, &id, root, userdata, ret); } diff --git a/src/test/test-specifier.c b/src/test/test-specifier.c index 62986e8dc2..6d4093ec05 100644 --- a/src/test/test-specifier.c +++ b/src/test/test-specifier.c @@ -136,7 +136,7 @@ TEST(specifiers) { xsprintf(spec, "%%%c", s->specifier); r = specifier_printf(spec, SIZE_MAX, specifier_table, NULL, NULL, &resolved); - if (s->specifier == 'm' && IN_SET(r, -ENOENT, -ENOMEDIUM)) /* machine-id might be missing in build chroots */ + if (s->specifier == 'm' && IN_SET(r, -EUNATCH, -ENOMEDIUM)) /* machine-id might be missing in build chroots */ continue; assert_se(r >= 0);