From da0b16825466b9b23c24e1bc2a567afa8e690ec7 Mon Sep 17 00:00:00 2001 From: Amith Yamasani Date: Fri, 21 Nov 2014 12:58:17 -0800 Subject: [PATCH] Fix parsing bug that affects reading back guest restrictions Now it remembers guest default restrictions across reboots. Bug: 18477780 Change-Id: I3a2c0d47825c8fcfc69edf791ddd6329e23ee04b --- .../com/android/server/pm/UserManagerService.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java index db0f53bf2f680..be3251cab9dfc 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 @@ public class UserManagerService extends IUserManager.Stub { |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 partials = new ArrayList(); @@ -469,7 +470,7 @@ public class UserManagerService extends IUserManager.Stub { private void initDefaultGuestRestrictions() { if (mGuestRestrictions.isEmpty()) { mGuestRestrictions.putBoolean(UserManager.DISALLOW_OUTGOING_CALLS, true); - writeUserListLocked(); + mGuestRestrictions.putBoolean(UserManager.DISALLOW_SMS, true); } } @@ -653,8 +654,15 @@ public class UserManagerService extends IUserManager.Stub { } } } 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; + } + } } } }