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

Commit 9a186a4d authored by Aseem Kumar's avatar Aseem Kumar Committed by Android Build Coastguard Worker
Browse files

Move accountname and typeName length check from Account.java to AccountManagerService.

Bug: 169762606
Test: atest AccountManagerServiceTest
Change-Id: I80fabf3a64c55837db98ff316e7e5420129c001b
(cherry picked from commit 0adcadb0)
(cherry picked from commit cf62c760)
Merged-In: I80fabf3a64c55837db98ff316e7e5420129c001b
parent e5dd8be7
Loading
Loading
Loading
Loading
+0 −7
Original line number Original line Diff line number Diff line
@@ -31,7 +31,6 @@ import android.util.Log;


import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.GuardedBy;


import java.util.Objects;
import java.util.Set;
import java.util.Set;


/**
/**
@@ -87,12 +86,6 @@ public class Account implements Parcelable {
        if (TextUtils.isEmpty(type)) {
        if (TextUtils.isEmpty(type)) {
            throw new IllegalArgumentException("the type must not be empty: " + type);
            throw new IllegalArgumentException("the type must not be empty: " + type);
        }
        }
        if (name.length() > 200) {
            throw new IllegalArgumentException("account name is longer than 200 characters");
        }
        if (type.length() > 200) {
            throw new IllegalArgumentException("account type is longer than 200 characters");
        }
        this.name = name;
        this.name = name;
        this.type = type;
        this.type = type;
        this.accessId = accessId;
        this.accessId = accessId;
+12 −0
Original line number Original line Diff line number Diff line
@@ -1820,6 +1820,14 @@ public class AccountManagerService
        if (account == null) {
        if (account == null) {
            return false;
            return false;
        }
        }
        if (account.name != null && account.name.length() > 200) {
            Log.w(TAG, "Account cannot be added - Name longer than 200 chars");
            return false;
        }
        if (account.type != null && account.type.length() > 200) {
            Log.w(TAG, "Account cannot be added - Name longer than 200 chars");
            return false;
        }
        if (!isLocalUnlockedUser(accounts.userId)) {
        if (!isLocalUnlockedUser(accounts.userId)) {
            Log.w(TAG, "Account " + account.toSafeString() + " cannot be added - user "
            Log.w(TAG, "Account " + account.toSafeString() + " cannot be added - user "
                    + accounts.userId + " is locked. callingUid=" + callingUid);
                    + accounts.userId + " is locked. callingUid=" + callingUid);
@@ -2065,6 +2073,10 @@ public class AccountManagerService
                + ", pid " + Binder.getCallingPid());
                + ", pid " + Binder.getCallingPid());
        }
        }
        if (accountToRename == null) throw new IllegalArgumentException("account is null");
        if (accountToRename == null) throw new IllegalArgumentException("account is null");
        if (newName != null && newName.length() > 200) {
            Log.e(TAG, "renameAccount failed - account name longer than 200");
            throw new IllegalArgumentException("account name longer than 200");
        }
        int userId = UserHandle.getCallingUserId();
        int userId = UserHandle.getCallingUserId();
        if (!isAccountManagedByCaller(accountToRename.type, callingUid, userId)) {
        if (!isAccountManagedByCaller(accountToRename.type, callingUid, userId)) {
            String msg = String.format(
            String msg = String.format(
+21 −0
Original line number Original line Diff line number Diff line
@@ -39,6 +39,7 @@ import android.accounts.IAccountManagerResponse;
import android.app.AppOpsManager;
import android.app.AppOpsManager;
import android.app.PropertyInvalidatedCache;
import android.app.PropertyInvalidatedCache;
import android.app.INotificationManager;
import android.app.INotificationManager;
import android.app.PropertyInvalidatedCache;
import android.app.admin.DevicePolicyManager;
import android.app.admin.DevicePolicyManager;
import android.app.admin.DevicePolicyManagerInternal;
import android.app.admin.DevicePolicyManagerInternal;
import android.content.BroadcastReceiver;
import android.content.BroadcastReceiver;
@@ -252,6 +253,26 @@ public class AccountManagerServiceTest extends AndroidTestCase {
        assertEquals(a31, accounts[1]);
        assertEquals(a31, accounts[1]);
    }
    }


    @SmallTest
    public void testCheckAddAccountLongName() throws Exception {
        unlockSystemUser();
        String longString = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
                + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
                + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
                + "aaaaa";
        Account a11 = new Account(longString, AccountManagerServiceTestFixtures.ACCOUNT_TYPE_1);

        mAms.addAccountExplicitly(
                a11, /* password= */ "p11", /* extras= */ null, /* callerPackage= */ null);

        String[] list = new String[]{AccountManagerServiceTestFixtures.CALLER_PACKAGE};
        when(mMockPackageManager.getPackagesForUid(anyInt())).thenReturn(list);
        Account[] accounts = mAms.getAccountsAsUser(null,
                UserHandle.getCallingUserId(), mContext.getOpPackageName());
        assertEquals(0, accounts.length);
    }


    @SmallTest
    @SmallTest
    public void testPasswords() throws Exception {
    public void testPasswords() throws Exception {
        unlockSystemUser();
        unlockSystemUser();