[lxc-devel] [lxc/master] utils: use access instead of stat
0x0916 on Github
lxc-bot at linuxcontainers.org
Sun Jul 9 00:43:12 UTC 2017
A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 417 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20170709/16893985/attachment.bin>
-------------- next part --------------
From e57cd7e9bb8770bdf041bbee866faaf4333abeea Mon Sep 17 00:00:00 2001
From: Long Wang <w at laoqinren.net>
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 <w at laoqinren.net>
---
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:
More information about the lxc-devel
mailing list