]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
utils: use access instead of stat 1688/head
authorLong Wang <w@laoqinren.net>
Sun, 9 Jul 2017 00:34:27 +0000 (08:34 +0800)
committerLong Wang <w@laoqinren.net>
Sun, 9 Jul 2017 00:38:13 +0000 (08:38 +0800)
we shoud test whether the file exists and grants
execute permissions.

Signed-off-by: Long Wang <w@laoqinren.net>
src/lxc/utils.c

index 2b30c056e35096375c61e1e2439310dd900be2a2..f4fa0ab06abbac51e2c2a5f6641f3c69851feb2e 100644 (file)
@@ -1264,7 +1264,6 @@ char *choose_init(const char *rootfs)
        const char *empty = "",
                   *tmp;
        int ret, env_set = 0;
-       struct stat mystat;
 
        if (!getenv("PATH")) {
                if (setenv("PATH", "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", 0))
@@ -1296,9 +1295,7 @@ char *choose_init(const char *rootfs)
                ERROR("pathname too long");
                goto out1;
        }
-
-       ret = stat(retv, &mystat);
-       if (ret == 0)
+       if (access(retv, X_OK) == 0)
                return retv;
 
        ret = snprintf(retv, PATH_MAX, "%s/%s/%s", tmp, LXCINITDIR, "/lxc/lxc-init");
@@ -1306,9 +1303,7 @@ char *choose_init(const char *rootfs)
                ERROR("pathname too long");
                goto out1;
        }
-
-       ret = stat(retv, &mystat);
-       if (ret == 0)
+       if (access(retv, X_OK) == 0)
                return retv;
 
        ret = snprintf(retv, PATH_MAX, "%s/usr/lib/lxc/lxc-init", tmp);
@@ -1316,8 +1311,7 @@ char *choose_init(const char *rootfs)
                ERROR("pathname too long");
                goto out1;
        }
-       ret = stat(retv, &mystat);
-       if (ret == 0)
+       if (access(retv, X_OK) == 0)
                return retv;
 
        ret = snprintf(retv, PATH_MAX, "%s/sbin/lxc-init", tmp);
@@ -1325,8 +1319,7 @@ char *choose_init(const char *rootfs)
                ERROR("pathname too long");
                goto out1;
        }
-       ret = stat(retv, &mystat);
-       if (ret == 0)
+       if (access(retv, X_OK) == 0)
                return retv;
 
        /*
@@ -1344,8 +1337,7 @@ char *choose_init(const char *rootfs)
                WARN("Nonsense - name /lxc.init.static too long");
                goto out1;
        }
-       ret = stat(retv, &mystat);
-       if (ret == 0)
+       if (access(retv, X_OK) == 0)
                return retv;
 
 out1: