aboutsummaryrefslogtreecommitdiffstats
path: root/meta/classes
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2013-08-01 18:17:16 +0100
committerPaul Eggleton <paul.eggleton@linux.intel.com>2013-08-07 11:44:34 +0100
commit041342a518e1d33349eb52e11750e155a5647735 (patch)
treecee5f5f3d6efadf4a5ced693caa1cf1d00f75784 /meta/classes
parent3974ebead1be20e3687ab66e8782da70118a3202 (diff)
downloadopenembedded-core-041342a518e1d33349eb52e11750e155a5647735.tar.gz
classes/sanity: check for suid root command evility
Some users have been found to have an unnamed third-party piece of software installed which sets chmod, chown and mknod as suid root as part of its installation process. This interferes with the operation of pseudo and can result in files really being owned by root within the build output, and therefore breaks the build, apart from being a security issue. Check for this and bail out if it is found. Reported-by: Nicolas Dechesne <nicolas.dechesne@linaro.org> (From OE-Core master rev: 08d61529f3c7a48ec82e1f8c9c28c7b2e5238934) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes')
-rw-r--r--meta/classes/sanity.bbclass11
1 files changed, 11 insertions, 0 deletions
diff --git a/meta/classes/sanity.bbclass b/meta/classes/sanity.bbclass
index 425d5127ec..e3444d1ba5 100644
--- a/meta/classes/sanity.bbclass
+++ b/meta/classes/sanity.bbclass
@@ -195,6 +195,17 @@ def check_sanity_tmpdir_change(tmpdir, data):
# Check that TMPDIR isn't on a filesystem with limited filename length (eg. eCryptFS)
testmsg = check_create_long_filename(tmpdir, "TMPDIR")
+
+ # Some third-party software apparently relies on chmod etc. being suid root (!!)
+ import stat
+ suid_check_bins = "chown chmod mknod".split()
+ for bin_cmd in suid_check_bins:
+ bin_path = bb.utils.which(os.environ["PATH"], bin_cmd)
+ if bin_path:
+ bin_stat = os.stat(bin_path)
+ if bin_stat.st_uid == 0 and bin_stat.st_mode & stat.S_ISUID:
+ testmsg = testmsg + '%s has the setuid bit set. This interferes with pseudo and may cause other issues that break the build process.\n' % bin_path
+
# Check that we can fetch from various network transports
errmsg = check_connectivity(data)
testmsg = testmsg + check_connectivity(data)