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

Commit 9429afba authored by Amith Yamasani's avatar Amith Yamasani
Browse files

Fix a security check in getting app restrictions

Change-Id: I02fbab8765d3f8646d0fe62ee867566d1d14707d
parent b3a98725
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -963,7 +963,7 @@ public class UserManagerService extends IUserManager.Stub {
    @Override
    public List<RestrictionEntry> getApplicationRestrictions(String packageName, int userId) {
        if (UserHandle.getCallingUserId() != userId
                || Binder.getCallingUid() != getUidForPackage(packageName)) {
                || !UserHandle.isSameApp(Binder.getCallingUid(), getUidForPackage(packageName))) {
            checkManageUsersPermission("Only system can get restrictions for other users/apps");
        }
        synchronized (mPackagesLock) {
@@ -976,7 +976,7 @@ public class UserManagerService extends IUserManager.Stub {
    public void setApplicationRestrictions(String packageName, List<RestrictionEntry> entries,
            int userId) {
        if (UserHandle.getCallingUserId() != userId
                || Binder.getCallingUid() != getUidForPackage(packageName)) {
                || !UserHandle.isSameApp(Binder.getCallingUid(), getUidForPackage(packageName))) {
            checkManageUsersPermission("Only system can set restrictions for other users/apps");
        }
        synchronized (mPackagesLock) {
@@ -986,11 +986,14 @@ public class UserManagerService extends IUserManager.Stub {
    }

    private int getUidForPackage(String packageName) {
        long ident = Binder.clearCallingIdentity();
        try {
            return mContext.getPackageManager().getApplicationInfo(packageName,
                    PackageManager.GET_UNINSTALLED_PACKAGES).uid;
        } catch (NameNotFoundException nnfe) {
            return -1;
        } finally {
            Binder.restoreCallingIdentity(ident);
        }
    }