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

Commit 29acf42b authored by Jackal Guo's avatar Jackal Guo Committed by Automerger Merge Worker
Browse files

Merge "Enforce owner rights check to get/setMimeGroup" into sc-dev am: fe786600 am: cb222108

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14419577

Change-Id: I985e05565937c45ac876f375b2cc10a32e958044
parents cad8047d cb222108
Loading
Loading
Loading
Loading
+19 −9
Original line number Diff line number Diff line
@@ -23184,16 +23184,17 @@ public class PackageManagerService extends IPackageManager.Stub
        if (UserHandle.getAppId(callingUid) == Process.SYSTEM_UID) {
            return;
        }
        final String[] callerPackageNames = getPackagesForUid(callingUid);
        if (!ArrayUtils.contains(callerPackageNames, pkg)) {
            throw new SecurityException("Calling uid " + callingUid
                    + " does not own package " + pkg);
        }
        final int callingUserId = UserHandle.getUserId(callingUid);
        PackageInfo pi = getPackageInfo(pkg, 0, callingUserId);
        if (pi == null) {
            throw new IllegalArgumentException("Unknown package " + pkg + " on user "
                    + callingUserId);
        }
        if (!UserHandle.isSameApp(pi.applicationInfo.uid, callingUid)) {
            throw new SecurityException("Calling uid " + callingUid
                    + " does not own package " + pkg);
        }
    }
    @Override
@@ -27943,7 +27944,7 @@ public class PackageManagerService extends IPackageManager.Stub
        @Override
        public List<String> getMimeGroup(String packageName, String mimeGroup) {
            return PackageManagerService.this.getMimeGroup(packageName, mimeGroup);
            return PackageManagerService.this.getMimeGroupInternal(packageName, mimeGroup);
        }
        @Override
@@ -28569,9 +28570,11 @@ public class PackageManagerService extends IPackageManager.Stub
    @Override
    public void setMimeGroup(String packageName, String mimeGroup, List<String> mimeTypes) {
        boolean changed = mSettings.getPackageLPr(packageName)
                .setMimeGroup(mimeGroup, mimeTypes);
        enforceOwnerRights(packageName, Binder.getCallingUid());
        final boolean changed;
        synchronized (mLock) {
            changed = mSettings.getPackageLPr(packageName).setMimeGroup(mimeGroup, mimeTypes);
        }
        if (changed) {
            applyMimeGroupChanges(packageName, mimeGroup);
        }
@@ -28579,8 +28582,15 @@ public class PackageManagerService extends IPackageManager.Stub
    @Override
    public List<String> getMimeGroup(String packageName, String mimeGroup) {
        enforceOwnerRights(packageName, Binder.getCallingUid());
        return getMimeGroupInternal(packageName, mimeGroup);
    }
    private List<String> getMimeGroupInternal(String packageName, String mimeGroup) {
        synchronized (mLock) {
            return mSettings.getPackageLPr(packageName).getMimeGroup(mimeGroup);
        }
    }
    @Override
    public void setSplashScreenTheme(@NonNull String packageName, @Nullable String themeId,