diff options
author | Amith Yamasani <yamasani@google.com> | 2012-09-11 10:59:48 -0700 |
---|---|---|
committer | Amith Yamasani <yamasani@google.com> | 2012-09-11 10:59:48 -0700 |
commit | faea76ff8bc9a350765873af81334afe4d14afbd (patch) | |
tree | c43f8ca46dc94f71346ce084c353a629cef21b07 /services/java/com/android/server/pm/UserManagerService.java | |
parent | 9f750af6c178d8abb5c12d34efba599e3d53aea4 (diff) |
Enforce a user limit
By default only 1 user is allowed. Some devices permit more than 1.
Set the real user limit in a device overlay for config.xml
Change-Id: I2e0bffa13393b954fcd20e55b92f20de980c58c0
Diffstat (limited to 'services/java/com/android/server/pm/UserManagerService.java')
-rw-r--r-- | services/java/com/android/server/pm/UserManagerService.java | 15 |
1 files changed, 15 insertions, 0 deletions
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)); |