Fix parsing bug that affects reading back guest restrictions
Now it remembers guest default restrictions across reboots.
Bug: 18477780
Change-Id: I3a2c0d47825c8fcfc69edf791ddd6329e23ee04b
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index db0f53b..be3251c 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -224,6 +224,7 @@
|FileUtils.S_IROTH|FileUtils.S_IXOTH,
-1, -1);
mUserListFile = new File(mUsersDir, USER_LIST_FILENAME);
+ initDefaultGuestRestrictions();
readUserListLocked();
// Prune out any partially created/partially removed users.
ArrayList<UserInfo> partials = new ArrayList<UserInfo>();
@@ -469,7 +470,7 @@
private void initDefaultGuestRestrictions() {
if (mGuestRestrictions.isEmpty()) {
mGuestRestrictions.putBoolean(UserManager.DISALLOW_OUTGOING_CALLS, true);
- writeUserListLocked();
+ mGuestRestrictions.putBoolean(UserManager.DISALLOW_SMS, true);
}
}
@@ -653,8 +654,15 @@
}
}
} else if (name.equals(TAG_GUEST_RESTRICTIONS)) {
- mGuestRestrictions.clear();
- readRestrictionsLocked(parser, mGuestRestrictions);
+ while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
+ && type != XmlPullParser.END_TAG) {
+ if (type == XmlPullParser.START_TAG) {
+ if (parser.getName().equals(TAG_RESTRICTIONS)) {
+ readRestrictionsLocked(parser, mGuestRestrictions);
+ }
+ break;
+ }
+ }
}
}
}