From e57cd7e9bb8770bdf041bbee866faaf4333abeea Mon Sep 17 00:00:00 2001 From: Long Wang Date: Sun, 9 Jul 2017 08:34:27 +0800 Subject: [PATCH] utils: use access instead of stat we shoud test whether the file exists and grants execute permissions. Signed-off-by: Long Wang --- src/lxc/utils.c | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/src/lxc/utils.c b/src/lxc/utils.c index 2b30c056e..f4fa0ab06 100644 --- a/src/lxc/utils.c +++ b/src/lxc/utils.c @@ -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: -- 2.47.2