diff options
| author | 2016-06-20 22:38:48 +0000 | |
|---|---|---|
| committer | 2016-06-20 22:38:51 +0000 | |
| commit | f00e7804727c3cadb44068583b73e59347bac6db (patch) | |
| tree | 6c7722cc10ddcb5bf6e95d992ad72973987d5d96 | |
| parent | db4ef3f4f83a0c0ae2c255006b3da2836a4b117c (diff) | |
| parent | 3b2297d05f407839b36d3866987d708b80fc9763 (diff) | |
Merge "Allow call addSharedAccountsFromParentUser with CREATE_USERS permission." into nyc-dev
| -rw-r--r-- | services/core/java/com/android/server/accounts/AccountManagerService.java | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/accounts/AccountManagerService.java b/services/core/java/com/android/server/accounts/AccountManagerService.java index 0cf517274f30..f7bd04b08ede 100644 --- a/services/core/java/com/android/server/accounts/AccountManagerService.java +++ b/services/core/java/com/android/server/accounts/AccountManagerService.java @@ -3538,7 +3538,7 @@ public class AccountManagerService @Override public void addSharedAccountsFromParentUser(int parentUserId, int userId) { - checkManageUsersPermission("addSharedAccountsFromParentUser"); + checkManageOrCreateUsersPermission("addSharedAccountsFromParentUser"); Account[] accounts = getAccountsAsUser(null, parentUserId, mContext.getOpPackageName()); for (Account account : accounts) { addSharedAccountAsUser(account, userId); @@ -5092,6 +5092,16 @@ public class AccountManagerService } } + private static void checkManageOrCreateUsersPermission(String message) { + if (ActivityManager.checkComponentPermission(android.Manifest.permission.MANAGE_USERS, + Binder.getCallingUid(), -1, true) != PackageManager.PERMISSION_GRANTED && + ActivityManager.checkComponentPermission(android.Manifest.permission.CREATE_USERS, + Binder.getCallingUid(), -1, true) != PackageManager.PERMISSION_GRANTED) { + throw new SecurityException("You need MANAGE_USERS or CREATE_USERS permission to: " + + message); + } + } + private boolean hasExplicitlyGrantedPermission(Account account, String authTokenType, int callerUid) { if (callerUid == Process.SYSTEM_UID) { |