summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Amith Yamasani <yamasani@google.com> 2012-09-11 11:08:37 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2012-09-11 11:08:38 -0700
commit8015f039c744fb59c14920550705af958fc3c86d (patch)
tree739bff16fdf793c26a7262850ee14c37a659ddd3
parent6fc7275d0ede6d352854db8fff95ec611bd07416 (diff)
parentfaea76ff8bc9a350765873af81334afe4d14afbd (diff)
Merge "Enforce a user limit" into jb-mr1-dev
-rwxr-xr-xcore/res/res/values/config.xml2
-rw-r--r--services/java/com/android/server/pm/UserManagerService.java15
2 files changed, 16 insertions, 1 deletions
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index bba22527e803..f0e55102a0be 100755
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -923,5 +923,5 @@
<bool name="config_syncstorageengine_masterSyncAutomatically">true</bool>
<!-- Maximum number of supported users -->
- <integer name="config_multiuserMaximumUsers">10</integer>
+ <integer name="config_multiuserMaximumUsers">1</integer>
</resources>
diff --git a/services/java/com/android/server/pm/UserManagerService.java b/services/java/com/android/server/pm/UserManagerService.java
index 3391668acc26..fc01f60d45bd 100644
--- a/services/java/com/android/server/pm/UserManagerService.java
+++ b/services/java/com/android/server/pm/UserManagerService.java
@@ -238,6 +238,18 @@ public class UserManagerService extends IUserManager.Stub {
}
/**
+ * 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}
* permission can make certain calls to the UserManager.
@@ -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));