Patchwork [v2,8/8] package.bbclass: fixup_perms - change symlink processing

login
register
mail settings
Submitter Mark Hatle
Date July 26, 2011, 9:31 p.m.
Message ID <84d5793eb7e14beb3c2c1396a58cc3a475510a27.1311715727.git.mark.hatle@windriver.com>
Download mbox | patch
Permalink /patch/8595/
State New, archived
Headers show

Comments

Mark Hatle - July 26, 2011, 9:31 p.m.
We switch to using os.lchown in order to avoid following a symlink.

We also now check if an item is a symlink, if so we avoid the
os.chmod as a symlink inherits the mode of it's target.

Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
---
 meta/classes/package.bbclass |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)

Patch

diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index f2950e2..076a532 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -472,7 +472,7 @@  python fixup_perms () {
 			else:
 				return int(mode,8)
 
-		# Note uid/gid -1 has special significance in os.chown
+		# Note uid/gid -1 has special significance in os.lchown
 		def _procuid(self, uid):
 			if uid is None or uid == "-":
 				return -1
@@ -514,14 +514,14 @@  python fixup_perms () {
 
 	# Fix the permission, owner and group of path
 	def fix_perms(path, mode, uid, gid, dir):
-		if mode:
+		if mode and not os.path.islink(path):
 			#bb.note("Fixup Perms: chmod 0%o %s" % (mode, dir))
 			os.chmod(path, mode)
 		# -1 is a special value that means don't change the uid/gid
-		# if they are BOTH -1, don't bother to chown
+		# if they are BOTH -1, don't bother to lchown
 		if not (uid == -1 and gid == -1):
-			#bb.note("Fixup Perms: chown %d:%d %s" % (uid, gid, dir))
-			os.chown(path, uid, gid)
+			#bb.note("Fixup Perms: lchown %d:%d %s" % (uid, gid, dir))
+			os.lchown(path, uid, gid)
 
 	# Return a list of configuration files based on either the default
 	# files/fs-perms.txt or the contents of FILESYSTEM_PERMS_TABLES