am dd77b561: Merge "Support SELinux context label when mounting"

* commit 'dd77b561e5e6da3bb595505af625f69ca9f3943b':
  Support SELinux context label when mounting
This commit is contained in:
Tao Bao 2015-06-26 23:09:08 +00:00 committed by Android Git Automerger
commit a629cdd393
2 changed files with 16 additions and 3 deletions

View file

@ -199,12 +199,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")
@ -253,6 +254,7 @@ def LoadRecoveryFSTab(read_helper, fstab_version):
line = line.strip()
if not line or line.startswith("#"):
continue
# <src> <mnt_point> <type> <mnt_flags and options> <fs_mgr_flags>
pieces = line.split()
if len(pieces) != 5:
raise ValueError("malformed recovery.fstab line: \"%s\"" % (line,))
@ -272,9 +274,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,))

View file

@ -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):