diff options
author | Amith Yamasani <yamasani@google.com> | 2012-10-04 17:34:21 -0700 |
---|---|---|
committer | Amith Yamasani <yamasani@google.com> | 2012-10-04 17:34:21 -0700 |
commit | 634cf31345ae843392215237e741d76271a5cfed (patch) | |
tree | ee052a043f0d9522f55595068ac79763ce7818d4 /services | |
parent | 33c36895a294c7b731fd59017a7ea0f06ac2a356 (diff) | |
download | frameworks_base-634cf31345ae843392215237e741d76271a5cfed.zip frameworks_base-634cf31345ae843392215237e741d76271a5cfed.tar.gz frameworks_base-634cf31345ae843392215237e741d76271a5cfed.tar.bz2 |
Fix serial number assignment for new user on a freshly wiped device
Bug: 7280093
User serial number was not being bumped up from 0 on a freshly wiped device
due to the userlist not existing. This was resulting in the first 2 users
getting the same serial number, messing up C2DM message delivery. This issue
doesn't show up if you boot the device before adding a user, so it wasn't
discovered earlier.
Change-Id: I8a5d99b9ad2ccfb66a16cacac9548ba53f0be387
Diffstat (limited to 'services')
-rw-r--r-- | services/java/com/android/server/pm/UserManagerService.java | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/services/java/com/android/server/pm/UserManagerService.java b/services/java/com/android/server/pm/UserManagerService.java index a0326c5..4f9375a 100644 --- a/services/java/com/android/server/pm/UserManagerService.java +++ b/services/java/com/android/server/pm/UserManagerService.java @@ -78,6 +78,8 @@ public class UserManagerService extends IUserManager.Stub { private static final String USER_LIST_FILENAME = "userlist.xml"; private static final String USER_PHOTO_FILENAME = "photo.png"; + private static final int MIN_USER_ID = 10; + private static final long EPOCH_PLUS_30_YEARS = 30L * 365 * 24 * 60 * 60 * 1000L; // ms private final Context mContext; @@ -459,6 +461,7 @@ public class UserManagerService extends IUserManager.Stub { UserInfo primary = new UserInfo(0, "Primary", null, UserInfo.FLAG_ADMIN | UserInfo.FLAG_PRIMARY); mUsers.put(0, primary); + mNextSerialNumber = MIN_USER_ID; updateUserIdsLocked(); writeUserListLocked(); @@ -832,7 +835,7 @@ public class UserManagerService extends IUserManager.Stub { */ private int getNextAvailableIdLocked() { synchronized (mPackagesLock) { - int i = 10; + int i = MIN_USER_ID; while (i < Integer.MAX_VALUE) { if (mUsers.indexOfKey(i) < 0 && !mRemovingUserIds.contains(i)) { break; @@ -862,7 +865,7 @@ public class UserManagerService extends IUserManager.Stub { for (int i = 0; i < mUsers.size(); i++) { UserInfo user = mUsers.valueAt(i); if (user == null) continue; - pw.print(" "); pw.print(user); + pw.print(" "); pw.print(user); pw.print(" serialNo="); pw.print(user.serialNumber); if (mRemovingUserIds.contains(mUsers.keyAt(i))) pw.print(" <removing> "); if (user.partial) pw.print(" <partial>"); pw.println(); |