DO NOT MERGE

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

Bug: 169762606
Test: atest AccountManagerServiceTest
Change-Id: I80fabf3a64c55837db98ff316e7e5420129c001b
This commit is contained in:
Aseem Kumar
2022-03-21 20:35:20 -07:00
parent b38c650ea9
commit 3f218c9a5e
3 changed files with 31 additions and 7 deletions

View File

@@ -30,7 +30,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;
/** /**
@@ -86,12 +85,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;

View File

@@ -1774,6 +1774,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);
@@ -1967,6 +1975,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(

View File

@@ -240,6 +240,25 @@ 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);
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();