diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index bba22527e803d..f0e55102a0be2 100755 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -923,5 +923,5 @@ true - 10 + 1 diff --git a/services/java/com/android/server/pm/UserManagerService.java b/services/java/com/android/server/pm/UserManagerService.java index 3391668acc264..fc01f60d45bd4 100644 --- a/services/java/com/android/server/pm/UserManagerService.java +++ b/services/java/com/android/server/pm/UserManagerService.java @@ -237,6 +237,18 @@ public class UserManagerService extends IUserManager.Stub { // TODO: } + /** + * Check if we've hit the limit of how many users can be created. + */ + private boolean isUserLimitReached() { + synchronized (mInstallLock) { + int nUsers = mUsers.size(); + int userLimit = mContext.getResources().getInteger( + com.android.internal.R.integer.config_multiuserMaximumUsers); + return nUsers >= userLimit; + } + } + /** * Enforces that only the system UID or root's UID or apps that have the * {@link android.Manifest.permission.MANAGE_USERS MANAGE_USERS} @@ -522,6 +534,9 @@ public class UserManagerService extends IUserManager.Stub { @Override public UserInfo createUser(String name, int flags) { checkManageUsersPermission("Only the system can create users"); + + if (isUserLimitReached()) return null; + int userId = getNextAvailableId(); UserInfo userInfo = new UserInfo(userId, name, null, flags); File userPath = new File(mBaseUserPath, Integer.toString(userId));