Loading services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPolicy.kt +11 −1 Original line number Diff line number Diff line Loading @@ -749,12 +749,17 @@ class AppIdPermissionPolicy : SchemePolicy() { // If this is an existing, non-system package, // then we can't add any new permissions to it. // Except if this is a permission that was added to the platform val newFlags = if (!wasRevoked || isRequestedByInstalledPackage || var newFlags = if (!wasRevoked || isRequestedByInstalledPackage || isRequestedBySystemPackage || isCompatibilityPermission) { PermissionFlags.INSTALL_GRANTED } else { PermissionFlags.INSTALL_REVOKED } if (permission.isAppOp) { newFlags = newFlags or ( oldFlags and (PermissionFlags.ROLE or PermissionFlags.USER_SET) ) } setPermissionFlags(appId, userId, permissionName, newFlags) } } else if (permission.isSignature || permission.isInternal) { Loading Loading @@ -784,6 +789,11 @@ class AppIdPermissionPolicy : SchemePolicy() { 0 } } if (permission.isAppOp) { newFlags = newFlags or ( oldFlags and (PermissionFlags.ROLE or PermissionFlags.USER_SET) ) } // Different from the old implementation, which seemingly allows granting an // unallowlisted privileged permission via development or role but revokes it upon next // reconciliation, we now properly allows that because the privileged protection flag Loading Loading
services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPolicy.kt +11 −1 Original line number Diff line number Diff line Loading @@ -749,12 +749,17 @@ class AppIdPermissionPolicy : SchemePolicy() { // If this is an existing, non-system package, // then we can't add any new permissions to it. // Except if this is a permission that was added to the platform val newFlags = if (!wasRevoked || isRequestedByInstalledPackage || var newFlags = if (!wasRevoked || isRequestedByInstalledPackage || isRequestedBySystemPackage || isCompatibilityPermission) { PermissionFlags.INSTALL_GRANTED } else { PermissionFlags.INSTALL_REVOKED } if (permission.isAppOp) { newFlags = newFlags or ( oldFlags and (PermissionFlags.ROLE or PermissionFlags.USER_SET) ) } setPermissionFlags(appId, userId, permissionName, newFlags) } } else if (permission.isSignature || permission.isInternal) { Loading Loading @@ -784,6 +789,11 @@ class AppIdPermissionPolicy : SchemePolicy() { 0 } } if (permission.isAppOp) { newFlags = newFlags or ( oldFlags and (PermissionFlags.ROLE or PermissionFlags.USER_SET) ) } // Different from the old implementation, which seemingly allows granting an // unallowlisted privileged permission via development or role but revokes it upon next // reconciliation, we now properly allows that because the privileged protection flag Loading