From: Tao Bao Date: Wed, 10 Jun 2015 19:32:41 +0000 (-0700) Subject: Support SELinux context label when mounting X-Git-Tag: android-x86-6.0-r1~174^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=548eb76c8f0e18d114ce4125905434c1c6920969;p=android-x86%2Fbuild.git Support SELinux context label when mounting If there is a SELinux context label in the recovery.fstab, we should honor that when mounting the partition. Bug: 19764039 Change-Id: I4df71a092b418cd340a18b2e3b0936de33d8e3f5 --- diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py index 4b276c3e7..6f921e0ad 100644 --- a/tools/releasetools/common.py +++ b/tools/releasetools/common.py @@ -202,12 +202,13 @@ def LoadDictionaryFromLines(lines): def LoadRecoveryFSTab(read_helper, fstab_version): class Partition(object): - def __init__(self, mount_point, fs_type, device, length, device2): + def __init__(self, mount_point, fs_type, device, length, device2, context): self.mount_point = mount_point self.fs_type = fs_type self.device = device self.length = length self.device2 = device2 + self.context = context try: data = read_helper("RECOVERY/RAMDISK/etc/recovery.fstab") @@ -256,6 +257,7 @@ def LoadRecoveryFSTab(read_helper, fstab_version): line = line.strip() if not line or line.startswith("#"): continue + # pieces = line.split() if len(pieces) != 5: raise ValueError("malformed recovery.fstab line: \"%s\"" % (line,)) @@ -275,9 +277,17 @@ def LoadRecoveryFSTab(read_helper, fstab_version): # Ignore all unknown options in the unified fstab continue + mount_flags = pieces[3] + # Honor the SELinux context if present. + context = None + for i in mount_flags.split(","): + if i.startswith("context="): + context = i + mount_point = pieces[1] d[mount_point] = Partition(mount_point=mount_point, fs_type=pieces[2], - device=pieces[0], length=length, device2=None) + device=pieces[0], length=length, + device2=None, context=context) else: raise ValueError("Unknown fstab_version: \"%d\"" % (fstab_version,)) diff --git a/tools/releasetools/edify_generator.py b/tools/releasetools/edify_generator.py index 3d0da88fe..281ed5913 100644 --- a/tools/releasetools/edify_generator.py +++ b/tools/releasetools/edify_generator.py @@ -177,9 +177,12 @@ class EdifyGenerator(object): if "=" in option: key, value = option.split("=", 1) mount_dict[key] = value + mount_flags = mount_dict.get(p.fs_type, "") + if p.context is not None: + mount_flags = p.context + ("," + mount_flags if mount_flags else "") self.script.append('mount("%s", "%s", "%s", "%s", "%s");' % ( p.fs_type, common.PARTITION_TYPES[p.fs_type], p.device, - p.mount_point, mount_dict.get(p.fs_type, ""))) + p.mount_point, mount_flags)) self.mounts.add(p.mount_point) def UnpackPackageDir(self, src, dst):