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));