From: Long Wang Date: Sun, 9 Jul 2017 00:34:27 +0000 (+0800) Subject: utils: use access instead of stat X-Git-Tag: lxc-2.1.0~56^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F1688%2Fhead;p=thirdparty%2Flxc.git utils: use access instead of stat we shoud test whether the file exists and grants execute permissions. Signed-off-by: Long Wang --- 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: