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

Commit ff712e38 authored by Sienna Liu's avatar Sienna Liu
Browse files

Fix updatePictureProfile permission issue.

Flag: EXEMPT bug fix
Bug: 424303078
Change-Id: I1dfc10f1d173cdac801e77a6abd8f533084d66b6
parent bd028a1b
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -335,7 +335,7 @@ public class MediaQualityService extends SystemService {
                            id, PictureProfile.ERROR_INVALID_ARGUMENT, callingUid, callingPid);
                    return;
                }
                if (!hasPermissionToUpdatePictureProfile(dbId, pp, callingUid)) {
                if (!hasPermissionToUpdatePictureProfile(dbId, pp, callingUid, callingPid)) {
                    mMqManagerNotifier.notifyOnPictureProfileError(
                            id, PictureProfile.ERROR_NO_PERMISSION, callingUid, callingPid);
                    return;
@@ -363,12 +363,16 @@ public class MediaQualityService extends SystemService {
        }

        private boolean hasPermissionToUpdatePictureProfile(
                Long dbId, PictureProfile toUpdate, int uid) {
                Long dbId, PictureProfile toUpdate, int uid, int pid) {
            PictureProfile fromDb = mMqDatabaseUtils.getPictureProfile(dbId);
            boolean isPackageOwner = fromDb.getPackageName().equals(getPackageOfUid(uid));
            boolean isSystemAppWithPermission =
                hasGlobalPictureQualityServicePermission(uid, pid)
                    && fromDb.getProfileType() == PictureProfile.TYPE_SYSTEM;
            return fromDb.getProfileType() == toUpdate.getProfileType()
                    && fromDb.getPackageName().equals(toUpdate.getPackageName())
                    && fromDb.getName().equals(toUpdate.getName())
                    && fromDb.getName().equals(getPackageOfUid(uid));
                    && fromDb.getPackageName().equals(toUpdate.getPackageName())
                    && (isPackageOwner || isSystemAppWithPermission);
        }

        @GuardedBy("mPictureProfileLock")