]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
various: correct laccess() error check
authorMike Yuan <me@yhndnzj.com>
Fri, 4 Oct 2024 19:05:21 +0000 (21:05 +0200)
committerMike Yuan <me@yhndnzj.com>
Fri, 4 Oct 2024 19:26:04 +0000 (21:26 +0200)
laccess is our own macro that uses RET_NERRNO.

src/basic/os-util.c
src/basic/path-lookup.c
src/coredump/coredump.c
src/home/homework-luks.c
src/kernel-install/kernel-install.c
src/libsystemd/sd-daemon/sd-daemon.c
src/shared/condition.c
src/shared/mount-util.c
src/sysext/sysext.c
src/system-update-generator/system-update-generator.c

index 4eec2f60149356a6f9f63474f4d066e4f2832a4b..3f6a14f5d697e01144a7b582066e2de8dd3129f6 100644 (file)
@@ -97,8 +97,9 @@ int path_is_extension_tree(ImageClass image_class, const char *path, const char
         /* Does the path exist at all? If not, generate an error immediately. This is useful so that a missing root dir
          * always results in -ENOENT, and we can properly distinguish the case where the whole root doesn't exist from
          * the case where just the os-release file is missing. */
-        if (laccess(path, F_OK) < 0)
-                return -errno;
+        r = laccess(path, F_OK);
+        if (r < 0)
+                return r;
 
         /* We use /usr/lib/extension-release.d/extension-release[.NAME] as flag for something being a system extension,
          * /etc/extension-release.d/extension-release[.NAME] as flag for something being a system configuration, and finally,
index 540256b73b84300e39db52bc81e5ffcebb01c370..0166fdcb9d0092a4d19cbb6e5d89e5f918517a53 100644 (file)
@@ -904,6 +904,7 @@ char **env_generator_binary_paths(RuntimeScope runtime_scope) {
 
 int find_portable_profile(const char *name, const char *unit, char **ret_path) {
         const char *dot;
+        int r;
 
         assert(name);
         assert(ret_path);
@@ -917,13 +918,13 @@ int find_portable_profile(const char *name, const char *unit, char **ret_path) {
                 if (!joined)
                         return -ENOMEM;
 
-                if (laccess(joined, F_OK) >= 0) {
+                r = laccess(joined, F_OK);
+                if (r >= 0) {
                         *ret_path = TAKE_PTR(joined);
                         return 0;
                 }
-
-                if (errno != ENOENT)
-                        return -errno;
+                if (r != -ENOENT)
+                        return r;
         }
 
         return -ENOENT;
index 4a01fea5f95383451d33ce7762a221294d8d6c0d..0da4a531f7a297d78294dc4fc0f45b0f8bb12f2a 100644 (file)
@@ -1525,8 +1525,9 @@ static int forward_coredump_to_container(Context *context) {
 
                 pair[0] = safe_close(pair[0]);
 
-                if (laccess("/run/systemd/coredump", W_OK) < 0) {
-                        log_debug_errno(errno, "Cannot find coredump socket, exiting: %m");
+                r = laccess("/run/systemd/coredump", W_OK);
+                if (r < 0) {
+                        log_debug_errno(r, "Cannot find coredump socket, exiting: %m");
                         _exit(EXIT_FAILURE);
                 }
 
index b859658f00d7abe35e97de40955a811fc4f3c51a..8ab8dd8cbd0f430481d59f4f15ca9860cad5eaaa 100644 (file)
@@ -1997,11 +1997,11 @@ static int wait_for_devlink(const char *path) {
                 _cleanup_free_ char *dn = NULL;
                 usec_t w;
 
-                if (laccess(path, F_OK) < 0) {
-                        if (errno != ENOENT)
-                                return log_error_errno(errno, "Failed to determine whether %s exists: %m", path);
-                } else
+                r = laccess(path, F_OK);
+                if (r >= 0)
                         return 0; /* Found it */
+                if (r != -ENOENT)
+                        return log_error_errno(r, "Failed to determine whether %s exists: %m", path);
 
                 if (inotify_fd < 0) {
                         /* We need to wait for the device symlink to show up, let's create an inotify watch for it */
index a937d03166cf2e38089cb39e969d5d85293ba114..bb646515d0387770a4d9e75eda60f79d9357c013 100644 (file)
@@ -1111,12 +1111,10 @@ static int kernel_from_version(const char *version, char **ret_kernel) {
                 return log_oom();
 
         r = laccess(vmlinuz, F_OK);
-        if (r < 0) {
-                if (r == -ENOENT)
-                        return log_error_errno(r, "Kernel image not installed to '%s', requiring manual kernel image path specification.", vmlinuz);
-
+        if (r == -ENOENT)
+                return log_error_errno(r, "Kernel image not installed to '%s', requiring manual kernel image path specification.", vmlinuz);
+        if (r < 0)
                 return log_error_errno(r, "Failed to determine if kernel image is installed to '%s': %m", vmlinuz);
-        }
 
         *ret_kernel = TAKE_PTR(vmlinuz);
         return 0;
index 4945d821501e563a9690ca34e82058332a3c212b..82e677b21509ed55eccc80ae0fbd1334f6355aba 100644 (file)
@@ -738,17 +738,18 @@ _public_ int sd_pid_notifyf_with_fds(
 }
 
 _public_ int sd_booted(void) {
-        /* We test whether the runtime unit file directory has been
-         * created. This takes place in mount-setup.c, so is
-         * guaranteed to happen very early during boot. */
+        int r;
 
-        if (laccess("/run/systemd/system/", F_OK) >= 0)
-                return true;
+        /* We test whether the runtime unit file directory has been created. This takes place in mount-setup.c,
+         * so is guaranteed to happen very early during boot. */
 
-        if (errno == ENOENT)
+        r = laccess("/run/systemd/system/", F_OK);
+        if (r >= 0)
+                return true;
+        if (r == -ENOENT)
                 return false;
 
-        return -errno;
+        return r;
 }
 
 _public_ int sd_watchdog_enabled(int unset_environment, uint64_t *usec) {
index da5c6f6309c90fd3e05482ada3d67b25a93c98e7..401a1feb3cf1913c12554322b330b601e1d3ee68 100644 (file)
@@ -169,10 +169,11 @@ static int condition_test_credential(Condition *c, char **env) {
                 if (!j)
                         return -ENOMEM;
 
-                if (laccess(j, F_OK) >= 0)
+                r = laccess(j, F_OK);
+                if (r >= 0)
                         return true; /* yay! */
-                if (errno != ENOENT)
-                        return -errno;
+                if (r != -ENOENT)
+                        return r;
 
                 /* not found in this dir */
         }
index d98df3809dcced1c9b983b1958477a82485bcd02..cf45791c12cc8754f3da49723a6667814de17e6a 100644 (file)
@@ -427,8 +427,9 @@ int bind_remount_one_with_mountinfo(
 
         fs = mnt_table_find_target(table, path, MNT_ITER_FORWARD);
         if (!fs) {
-                if (laccess(path, F_OK) < 0) /* Hmm, it's not in the mount table, but does it exist at all? */
-                        return -errno;
+                r = laccess(path, F_OK); /* Hmm, it's not in the mount table, but does it exist at all? */
+                if (r < 0)
+                        return r;
 
                 return -EINVAL; /* Not a mount point we recognize */
         }
index b40f5b7b47bf61af4da2e1f605607a2cfa8840c2..de52a14d0d3a58235da6c4d700e805f2af3e97b2 100644 (file)
@@ -1760,13 +1760,11 @@ static int merge_subprocess(
                 if (!p)
                         return log_oom();
 
-                if (laccess(p, F_OK) < 0) {
-                        if (errno != ENOENT)
-                                return log_error_errno(errno, "Failed to check if '%s' exists: %m", p);
-
-                        /* Hierarchy apparently was empty in all extensions, and wasn't mounted, ignoring. */
+                r = laccess(p, F_OK);
+                if (r == -ENOENT) /* Hierarchy apparently was empty in all extensions, and wasn't mounted, ignoring. */
                         continue;
-                }
+                if (r < 0)
+                        return log_error_errno(r, "Failed to check if '%s' exists: %m", p);
 
                 r = chase(*h, arg_root, CHASE_PREFIX_ROOT|CHASE_NONEXISTENT, &resolved, NULL);
                 if (r < 0)
index a1782d5c059524fd74329811cc02546c377532bb..d8845306747dc6315fc553c560634b89bd033235 100644 (file)
 static const char *arg_dest = NULL;
 
 static int generate_symlink(void) {
+        int r;
+
         FOREACH_STRING(p, "/system-update", "/etc/system-update") {
-                if (laccess(p, F_OK) >= 0) {
-                        _cleanup_free_ char *j = NULL;
+                r = laccess(p, F_OK);
+                if (r < 0) {
+                        if (r != -ENOENT)
+                                log_warning_errno(r, "Failed to check if %s symlink exists, ignoring: %m", p);
+                        continue;
+                }
 
-                        j = path_join(arg_dest, SPECIAL_DEFAULT_TARGET);
-                        if (!j)
-                                return log_oom();
+                _cleanup_free_ char *j = NULL;
 
-                        if (symlink(SYSTEM_DATA_UNIT_DIR "/system-update.target", j) < 0)
-                                return log_error_errno(errno, "Failed to create symlink %s: %m", j);
+                j = path_join(arg_dest, SPECIAL_DEFAULT_TARGET);
+                if (!j)
+                        return log_oom();
 
-                        return 1;
-                }
+                if (symlink(SYSTEM_DATA_UNIT_DIR "/system-update.target", j) < 0)
+                        return log_error_errno(errno, "Failed to create symlink %s: %m", j);
 
-                if (errno != ENOENT)
-                        log_warning_errno(errno, "Failed to check if %s symlink exists, ignoring: %m", p);
+                return 1;
         }
 
         return 0;