[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