diff options
author | Amith Yamasani <yamasani@google.com> | 2013-09-26 13:20:17 -0700 |
---|---|---|
committer | Amith Yamasani <yamasani@google.com> | 2013-09-26 13:20:17 -0700 |
commit | fc95e70abd1ab94668e312aa3862ca6b89832da4 (patch) | |
tree | 9f3163b1a1dd2b4562cbb3174d689ec9dd0060f4 /services/java/com/android/server/pm/UserManagerService.java | |
parent | 562ce888af21fc18d1610545ff6373ee2ecbbb13 (diff) |
Don't remove restrictions files that are valid
This fixes a bug in parsing the package name from a file name. The suffix
was not taken into account, resulting in all restrictions files being
removed on switching to a user.
Bug: 10947554
Change-Id: I62725bbbdc0e15609872de3896130d4acbc35386
Diffstat (limited to 'services/java/com/android/server/pm/UserManagerService.java')
-rw-r--r-- | services/java/com/android/server/pm/UserManagerService.java | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/services/java/com/android/server/pm/UserManagerService.java b/services/java/com/android/server/pm/UserManagerService.java index d0e9fe1fd813..c33134a24d19 100644 --- a/services/java/com/android/server/pm/UserManagerService.java +++ b/services/java/com/android/server/pm/UserManagerService.java @@ -110,6 +110,7 @@ public class UserManagerService extends IUserManager.Stub { private static final String USER_PHOTO_FILENAME = "photo.png"; private static final String RESTRICTIONS_FILE_PREFIX = "res_"; + private static final String XML_SUFFIX = ".xml"; private static final int MIN_USER_ID = 10; @@ -622,7 +623,7 @@ public class UserManagerService extends IUserManager.Stub { */ private void writeUserLocked(UserInfo userInfo) { FileOutputStream fos = null; - AtomicFile userFile = new AtomicFile(new File(mUsersDir, userInfo.id + ".xml")); + AtomicFile userFile = new AtomicFile(new File(mUsersDir, userInfo.id + XML_SUFFIX)); try { fos = userFile.startWrite(); final BufferedOutputStream bos = new BufferedOutputStream(fos); @@ -751,7 +752,7 @@ public class UserManagerService extends IUserManager.Stub { FileInputStream fis = null; try { AtomicFile userFile = - new AtomicFile(new File(mUsersDir, Integer.toString(id) + ".xml")); + new AtomicFile(new File(mUsersDir, Integer.toString(id) + XML_SUFFIX)); fis = userFile.openRead(); XmlPullParser parser = Xml.newPullParser(); parser.setInput(fis, null); @@ -909,7 +910,7 @@ public class UserManagerService extends IUserManager.Stub { if (all) { resFile.delete(); } else { - String pkg = fileName.substring(RESTRICTIONS_FILE_PREFIX.length()); + String pkg = restrictionsFileNameToPackage(fileName); if (!isPackageInstalled(pkg, userId)) { resFile.delete(); } @@ -926,7 +927,7 @@ public class UserManagerService extends IUserManager.Stub { private void cleanAppRestrictionsForPackage(String pkg, int userId) { synchronized (mPackagesLock) { File dir = Environment.getUserSystemDirectory(userId); - File resFile = new File(dir, RESTRICTIONS_FILE_PREFIX + pkg); + File resFile = new File(dir, packageToRestrictionsFileName(pkg)); if (resFile.exists()) { resFile.delete(); } @@ -1072,7 +1073,7 @@ public class UserManagerService extends IUserManager.Stub { mRestrictionsPinStates.remove(userHandle); // Remove user file - AtomicFile userFile = new AtomicFile(new File(mUsersDir, userHandle + ".xml")); + AtomicFile userFile = new AtomicFile(new File(mUsersDir, userHandle + XML_SUFFIX)); userFile.delete(); // Update the user list writeUserListLocked(); @@ -1307,7 +1308,7 @@ public class UserManagerService extends IUserManager.Stub { try { AtomicFile restrictionsFile = new AtomicFile(new File(Environment.getUserSystemDirectory(userId), - RESTRICTIONS_FILE_PREFIX + packageName + ".xml")); + packageToRestrictionsFileName(packageName))); fis = restrictionsFile.openRead(); XmlPullParser parser = Xml.newPullParser(); parser.setInput(fis, null); @@ -1368,7 +1369,7 @@ public class UserManagerService extends IUserManager.Stub { FileOutputStream fos = null; AtomicFile restrictionsFile = new AtomicFile( new File(Environment.getUserSystemDirectory(userId), - RESTRICTIONS_FILE_PREFIX + packageName + ".xml")); + packageToRestrictionsFileName(packageName))); try { fos = restrictionsFile.startWrite(); final BufferedOutputStream bos = new BufferedOutputStream(fos); @@ -1498,6 +1499,15 @@ public class UserManagerService extends IUserManager.Stub { } } + private String packageToRestrictionsFileName(String packageName) { + return RESTRICTIONS_FILE_PREFIX + packageName + XML_SUFFIX; + } + + private String restrictionsFileNameToPackage(String fileName) { + return fileName.substring(RESTRICTIONS_FILE_PREFIX.length(), + (int) (fileName.length() - XML_SUFFIX.length())); + } + @Override protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.DUMP) |