utils: use access instead of stat

we shoud test whether the file exists and grants execute permissions. Signed-off-by: 's avatarLong Wang <w@laoqinren.net>
parent 3f0af363
...@@ -1264,7 +1264,6 @@ char *choose_init(const char *rootfs) ...@@ -1264,7 +1264,6 @@ char *choose_init(const char *rootfs)
const char *empty = "", const char *empty = "",
*tmp; *tmp;
int ret, env_set = 0; int ret, env_set = 0;
struct stat mystat;
if (!getenv("PATH")) { if (!getenv("PATH")) {
if (setenv("PATH", "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", 0)) 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) ...@@ -1296,9 +1295,7 @@ char *choose_init(const char *rootfs)
ERROR("pathname too long"); ERROR("pathname too long");
goto out1; goto out1;
} }
if (access(retv, X_OK) == 0)
ret = stat(retv, &mystat);
if (ret == 0)
return retv; return retv;
ret = snprintf(retv, PATH_MAX, "%s/%s/%s", tmp, LXCINITDIR, "/lxc/lxc-init"); ret = snprintf(retv, PATH_MAX, "%s/%s/%s", tmp, LXCINITDIR, "/lxc/lxc-init");
...@@ -1306,9 +1303,7 @@ char *choose_init(const char *rootfs) ...@@ -1306,9 +1303,7 @@ char *choose_init(const char *rootfs)
ERROR("pathname too long"); ERROR("pathname too long");
goto out1; goto out1;
} }
if (access(retv, X_OK) == 0)
ret = stat(retv, &mystat);
if (ret == 0)
return retv; return retv;
ret = snprintf(retv, PATH_MAX, "%s/usr/lib/lxc/lxc-init", tmp); ret = snprintf(retv, PATH_MAX, "%s/usr/lib/lxc/lxc-init", tmp);
...@@ -1316,8 +1311,7 @@ char *choose_init(const char *rootfs) ...@@ -1316,8 +1311,7 @@ char *choose_init(const char *rootfs)
ERROR("pathname too long"); ERROR("pathname too long");
goto out1; goto out1;
} }
ret = stat(retv, &mystat); if (access(retv, X_OK) == 0)
if (ret == 0)
return retv; return retv;
ret = snprintf(retv, PATH_MAX, "%s/sbin/lxc-init", tmp); ret = snprintf(retv, PATH_MAX, "%s/sbin/lxc-init", tmp);
...@@ -1325,8 +1319,7 @@ char *choose_init(const char *rootfs) ...@@ -1325,8 +1319,7 @@ char *choose_init(const char *rootfs)
ERROR("pathname too long"); ERROR("pathname too long");
goto out1; goto out1;
} }
ret = stat(retv, &mystat); if (access(retv, X_OK) == 0)
if (ret == 0)
return retv; return retv;
/* /*
...@@ -1344,8 +1337,7 @@ char *choose_init(const char *rootfs) ...@@ -1344,8 +1337,7 @@ char *choose_init(const char *rootfs)
WARN("Nonsense - name /lxc.init.static too long"); WARN("Nonsense - name /lxc.init.static too long");
goto out1; goto out1;
} }
ret = stat(retv, &mystat); if (access(retv, X_OK) == 0)
if (ret == 0)
return retv; return retv;
out1: out1:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment