From e0af2bb2bf79bf942763635e4d71c7b30856f70f Mon Sep 17 00:00:00 2001 From: Neil Fuller Date: Wed, 26 Jul 2017 12:11:58 +0100 Subject: Alter condition for starting RulesManagerService Modify the condition used for starting RulesManagerService: use mOnlyCore rather than disableNonCoreServices. mOnlyCore is important for the secure lock screen and when mOnlyCore is true the RulesManagerService cannot perform trust checks. Therefore, disable the RulesManagerService when mOnlyCore == true. disableNonCoreServices is apparently not used. Bug: 64057583 Test: Boot device with time zone updates enabled and with a lock pattern set. Merged-In: Idd7cb6e11b1a91dfe7394f6c98f8fa3e0eec9dce Change-Id: Idd7cb6e11b1a91dfe7394f6c98f8fa3e0eec9dce --- services/java/com/android/server/SystemServer.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'services/java') diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index 99ad00b65d18..ed429881a4f8 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -965,8 +965,13 @@ public final class SystemServer { Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER); } - if (!disableNonCoreServices && context.getResources().getBoolean( - R.bool.config_enableUpdateableTimeZoneRules)) { + // timezone.RulesManagerService will prevent a device starting up if the chain of trust + // required for safe time zone updates might be broken. RuleManagerService cannot do + // this check when mOnlyCore == true, so we don't enable the service in this case. + final boolean startRulesManagerService = + !mOnlyCore && context.getResources().getBoolean( + R.bool.config_enableUpdateableTimeZoneRules); + if (startRulesManagerService) { traceBeginAndSlog("StartTimeZoneRulesManagerService"); mSystemServiceManager.startService(TIME_ZONE_RULES_MANAGER_SERVICE_CLASS); Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER); -- cgit v1.2.3-59-g8ed1b