diff options
| -rw-r--r-- | services/core/java/com/android/server/accounts/AccountManagerService.java | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/accounts/AccountManagerService.java b/services/core/java/com/android/server/accounts/AccountManagerService.java index ea9b65198e4b..0f1710f89e97 100644 --- a/services/core/java/com/android/server/accounts/AccountManagerService.java +++ b/services/core/java/com/android/server/accounts/AccountManagerService.java @@ -4363,7 +4363,7 @@ public class AccountManagerService * security policy. * * In particular we want to make sure that the Authenticator doesn't try to trick users - * into launching aribtrary intents on the device via by tricking to click authenticator + * into launching arbitrary intents on the device via by tricking to click authenticator * supplied entries in the system Settings app. */ protected void checkKeyIntent( @@ -4375,12 +4375,9 @@ public class AccountManagerService ResolveInfo resolveInfo = pm.resolveActivityAsUser(intent, 0, mAccounts.userId); ActivityInfo targetActivityInfo = resolveInfo.activityInfo; int targetUid = targetActivityInfo.applicationInfo.uid; - if (!GrantCredentialsPermissionActivity.class.getName().equals( - targetActivityInfo.getClass().getName()) - && !CantAddAccountActivity.class - .equals(targetActivityInfo.getClass().getName()) - && PackageManager.SIGNATURE_MATCH != pm.checkSignatures(authUid, - targetUid)) { + if (!isExportedSystemActivity(targetActivityInfo) + && (PackageManager.SIGNATURE_MATCH != pm.checkSignatures(authUid, + targetUid))) { String pkgName = targetActivityInfo.packageName; String activityName = targetActivityInfo.name; String tmpl = "KEY_INTENT resolved to an Activity (%s) in a package (%s) that " @@ -4393,6 +4390,13 @@ public class AccountManagerService } } + private boolean isExportedSystemActivity(ActivityInfo activityInfo) { + String className = activityInfo.name; + return "android".equals(activityInfo.packageName) && + (GrantCredentialsPermissionActivity.class.getName().equals(className) + || CantAddAccountActivity.class.getName().equals(className)); + } + private void close() { synchronized (mSessions) { if (mSessions.remove(toString()) == null) { |