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

Commit e5cb2b87 authored by Suprabh Shukla's avatar Suprabh Shukla Committed by Android (Google) Code Review
Browse files

Merge "Relax restrictions on appop protection level" into sc-dev

parents d43d8655 f7e44ca9
Loading
Loading
Loading
Loading
+8 −11
Original line number Diff line number Diff line
@@ -108,17 +108,14 @@ public class ParsedPermissionUtils {

        permission.protectionLevel = PermissionInfo.fixProtectionLevel(permission.protectionLevel);

        if (permission.getProtectionFlags() != 0) {
            if ((permission.protectionLevel & PermissionInfo.PROTECTION_FLAG_INSTANT) == 0
                    && (permission.protectionLevel & PermissionInfo.PROTECTION_FLAG_RUNTIME_ONLY)
                    == 0
                    && (permission.protectionLevel & PermissionInfo.PROTECTION_MASK_BASE)
                    != PermissionInfo.PROTECTION_SIGNATURE
                    && (permission.protectionLevel & PermissionInfo.PROTECTION_MASK_BASE)
                    != PermissionInfo.PROTECTION_INTERNAL) {
                return input.error("<permission>  protectionLevel specifies a non-instant flag "
                        + "but is not based on signature or internal type");
            }
        final int otherProtectionFlags = permission.getProtectionFlags()
                & ~(PermissionInfo.PROTECTION_FLAG_APPOP | PermissionInfo.PROTECTION_FLAG_INSTANT
                | PermissionInfo.PROTECTION_FLAG_RUNTIME_ONLY);
        if (otherProtectionFlags != 0
                && permission.getProtection() != PermissionInfo.PROTECTION_SIGNATURE
                && permission.getProtection() != PermissionInfo.PROTECTION_INTERNAL) {
            return input.error("<permission> protectionLevel specifies a non-instant, non-appop,"
                    + " non-runtimeOnly flag but is not based on signature or internal type");
        }

        return ComponentParseUtils.parseAllMetaData(pkg, res, parser, tag, permission, input);