Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f00e7804 authored by Sudheer Shanka's avatar Sudheer Shanka Committed by Android (Google) Code Review
Browse files

Merge "Allow call addSharedAccountsFromParentUser with CREATE_USERS permission." into nyc-dev

parents db4ef3f4 3b2297d0
Loading
Loading
Loading
Loading
+11 −1
Original line number Original line Diff line number Diff line
@@ -3538,7 +3538,7 @@ public class AccountManagerService


    @Override
    @Override
    public void addSharedAccountsFromParentUser(int parentUserId, int userId) {
    public void addSharedAccountsFromParentUser(int parentUserId, int userId) {
        checkManageUsersPermission("addSharedAccountsFromParentUser");
        checkManageOrCreateUsersPermission("addSharedAccountsFromParentUser");
        Account[] accounts = getAccountsAsUser(null, parentUserId, mContext.getOpPackageName());
        Account[] accounts = getAccountsAsUser(null, parentUserId, mContext.getOpPackageName());
        for (Account account : accounts) {
        for (Account account : accounts) {
            addSharedAccountAsUser(account, userId);
            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,
    private boolean hasExplicitlyGrantedPermission(Account account, String authTokenType,
            int callerUid) {
            int callerUid) {
        if (callerUid == Process.SYSTEM_UID) {
        if (callerUid == Process.SYSTEM_UID) {