]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
specifier: always convert missing machine-id file to EUNATCH
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 1 Apr 2023 13:48:14 +0000 (22:48 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 4 Apr 2023 15:52:56 +0000 (00:52 +0900)
Then, use id128_get_machine().

src/shared/specifier.c
src/test/test-specifier.c

index 65e555f716da141079626f85eae636376cf29cfc..a4a4017f061939980f856b1e77c3ed8f5551ac93 100644 (file)
@@ -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);
 }
index 62986e8dc2e3186afdea94ca4ed2492c64230682..6d4093ec05d618db6abc15be35ff9f93a5e080bc 100644 (file)
@@ -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);