Require a vendor_ prefix for users/groups in /vendor/etc/{passwd,group}

Bug: 79528966
Test: successful build with vendor_ prefixed users/groups
Test: expected build failure when not using vendor_ prefixed users/groups
Merged-In: If006c70178aa5bdcc9521a06ef8df2500f70bbb9
Change-Id: If006c70178aa5bdcc9521a06ef8df2500f70bbb9
(cherry picked from commit 2d197a1e19)
This commit is contained in:
Tom Cherry 2018-05-14 13:14:41 -07:00
parent 00e17fa8b4
commit 5a3fd15548
2 changed files with 16 additions and 5 deletions

View file

@ -254,7 +254,7 @@ LOCAL_EXPORT_C_INCLUDE_DEPS := $(my_gen_oem_aid)
include $(BUILD_HEADER_LIBRARY)
##################################
# Generate the system/etc/passwd text file for the target
# Generate the vendor/etc/passwd text file for the target
# This file may be empty if no AIDs are defined in
# TARGET_FS_CONFIG_GEN files.
include $(CLEAR_VARS)
@ -270,10 +270,10 @@ $(LOCAL_BUILT_MODULE): PRIVATE_TARGET_FS_CONFIG_GEN := $(TARGET_FS_CONFIG_GEN)
$(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_FS_HDR := $(system_android_filesystem_config)
$(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/fs_config_generator.py $(TARGET_FS_CONFIG_GEN) $(system_android_filesystem_config)
@mkdir -p $(dir $@)
$(hide) $< passwd --aid-header=$(PRIVATE_ANDROID_FS_HDR) $(PRIVATE_TARGET_FS_CONFIG_GEN) > $@
$(hide) $< passwd --required-prefix=vendor_ --aid-header=$(PRIVATE_ANDROID_FS_HDR) $(PRIVATE_TARGET_FS_CONFIG_GEN) > $@
##################################
# Generate the system/etc/group text file for the target
# Generate the vendor/etc/group text file for the target
# This file may be empty if no AIDs are defined in
# TARGET_FS_CONFIG_GEN files.
include $(CLEAR_VARS)
@ -289,7 +289,7 @@ $(LOCAL_BUILT_MODULE): PRIVATE_TARGET_FS_CONFIG_GEN := $(TARGET_FS_CONFIG_GEN)
$(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_FS_HDR := $(system_android_filesystem_config)
$(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/fs_config_generator.py $(TARGET_FS_CONFIG_GEN) $(system_android_filesystem_config)
@mkdir -p $(dir $@)
$(hide) $< group --aid-header=$(PRIVATE_ANDROID_FS_HDR) $(PRIVATE_TARGET_FS_CONFIG_GEN) > $@
$(hide) $< group --required-prefix=vendor_ --aid-header=$(PRIVATE_ANDROID_FS_HDR) $(PRIVATE_TARGET_FS_CONFIG_GEN) > $@
system_android_filesystem_config :=
endif

View file

@ -1235,12 +1235,19 @@ class PasswdGen(BaseGenerator):
help='An android_filesystem_config.h file'
'to parse AIDs and OEM Ranges from')
opt_group.add_argument(
'--required-prefix',
required=False,
help='A prefix that the names are required to contain.')
def __call__(self, args):
hdr_parser = AIDHeaderParser(args['aid_header'])
parser = FSConfigFileParser(args['fsconfig'], hdr_parser.oem_ranges)
required_prefix = args['required_prefix']
aids = parser.aids
# nothing to do if no aids defined
@ -1250,7 +1257,11 @@ class PasswdGen(BaseGenerator):
print PasswdGen._GENERATED
for aid in aids:
self._print_formatted_line(aid)
if required_prefix is None or aid.friendly.startswith(required_prefix):
self._print_formatted_line(aid)
else:
sys.exit("%s: AID '%s' must start with '%s'" %
(args['fsconfig'], aid.friendly, required_prefix))
def _print_formatted_line(self, aid):
"""Prints the aid to stdout in the passwd format. Internal use only.