Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2d42d5f4 authored by Amith Yamasani's avatar Amith Yamasani
Browse files

Check user state after clearing identity.

This is to fix the case where the caller has GRANT_REVOKE_PERMISSIONS
but does not have MANAGE_USERS permission.

Related to a recent fix for
Bug: 22356546

Change-Id: Id51157abad14a0bdba3a16d7cd168f61ba25e890
parent 1b3d0351
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -3461,13 +3461,14 @@ public class PackageManagerService extends IPackageManager.Stub {
        // Only need to do this if user is initialized. Otherwise it's a new user
        // and there are no processes running as the user yet and there's no need
        // to make an expensive call to remount processes for the changed permissions.
        if ((READ_EXTERNAL_STORAGE.equals(name)
                || WRITE_EXTERNAL_STORAGE.equals(name))
                && sUserManager.isInitialized(userId)) {
        if (READ_EXTERNAL_STORAGE.equals(name)
                || WRITE_EXTERNAL_STORAGE.equals(name)) {
            final long token = Binder.clearCallingIdentity();
            try {
                if (sUserManager.isInitialized(userId)) {
                    final StorageManager storage = mContext.getSystemService(StorageManager.class);
                    storage.remountUid(uid);
                }
            } finally {
                Binder.restoreCallingIdentity(token);
            }