Skip to content

Commit

Permalink
utils: use access instead of stat
Browse files Browse the repository at this point in the history
we shoud test whether the file exists and grants
execute permissions.

Signed-off-by: Long Wang <w@laoqinren.net>
  • Loading branch information
0x0916 committed Jul 9, 2017
1 parent 3f0af36 commit e57cd7e
Showing 1 changed file with 5 additions and 13 deletions.
18 changes: 5 additions & 13 deletions src/lxc/utils.c
Expand Up @@ -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))
Expand Down Expand Up @@ -1296,37 +1295,31 @@ 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");
if (ret < 0 || ret >= PATH_MAX) {
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);
if (ret < 0 || ret >= PATH_MAX) {
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);
if (ret < 0 || ret >= PATH_MAX) {
ERROR("pathname too long");
goto out1;
}
ret = stat(retv, &mystat);
if (ret == 0)
if (access(retv, X_OK) == 0)
return retv;

/*
Expand All @@ -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:
Expand Down

0 comments on commit e57cd7e

Please sign in to comment.