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

Commit 5db602fd authored by Svetoslav's avatar Svetoslav Committed by Svetoslav Ganov
Browse files

Enforce weaker grant if app is default handler for miltiple action

Change-Id: Ibc46e458e277412ebb276eb5ba6f2765b6b6c5e9
parent ebbdabdb
Loading
Loading
Loading
Loading
+15 −2
Original line number Diff line number Diff line
@@ -819,8 +819,8 @@ final class DefaultPermissionGrantPolicy {

                    mService.grantRuntimePermission(pkg.packageName, permission, userId);
                    if (DEBUG) {
                        Log.i(TAG, "Granted " + permission + " to default handler "
                                + pkg.packageName);
                        Log.i(TAG, "Granted " + (systemFixed ? "fixed " : "not fixed ")
                                + permission + " to default handler " + pkg.packageName);
                    }

                    int newFlags = PackageManager.FLAG_PERMISSION_GRANTED_BY_DEFAULT;
@@ -831,6 +831,19 @@ final class DefaultPermissionGrantPolicy {
                    mService.updatePermissionFlags(permission, pkg.packageName,
                            newFlags, newFlags, userId);
                }

                // If a component gets a permission for being the default handler A
                // and also default handler B, we grant the weaker grant form.
                if ((flags & PackageManager.FLAG_PERMISSION_GRANTED_BY_DEFAULT) != 0
                        && (flags & PackageManager.FLAG_PERMISSION_SYSTEM_FIXED) != 0
                        && !systemFixed) {
                    if (DEBUG) {
                        Log.i(TAG, "Granted not fixed " + permission + " to default handler "
                                + pkg.packageName);
                    }
                    mService.updatePermissionFlags(permission, pkg.packageName,
                            PackageManager.FLAG_PERMISSION_SYSTEM_FIXED, 0, userId);
                }
            }
        }
    }
+0 −6
Original line number Diff line number Diff line
@@ -3716,12 +3716,6 @@ public class PackageManagerService extends IPackageManager.Stub {
            PermissionsState permissionsState = sb.getPermissionsState();
            // Only the package manager can change flags for system component permissions.
            final int flags = permissionsState.getPermissionFlags(bp.name, userId);
            if ((flags & PackageManager.FLAG_PERMISSION_SYSTEM_FIXED) != 0) {
                return;
            }
            boolean hadState = permissionsState.getRuntimePermissionState(name, userId) != null;
            if (permissionsState.updatePermissionFlags(bp, userId, flagMask, flagValues)) {