From 553fc4297c54eb0dac8dce49fbf3fc477660853f Mon Sep 17 00:00:00 2001 From: Hai Zhang Date: Mon, 22 Mar 2021 03:18:50 +0000 Subject: [PATCH] Fix all runtime permissions being considered changing protection from non-runtime on first boot. 1. Don't check against a newly created permission object, as it will always have signature protection and be considered non-runtime. 2. "Placeholder" permissions of TYPE_CONFIG shouldn't count as an existing permission, as they are only used for assigning GIDs. Bug: 183304624 Test: manual Test: atest PermissionEscalationTest (from ag/12980961) Change-Id: I39055a914a8575c754a3a4def2b2a31071605986 --- .../core/java/com/android/server/pm/permission/Permission.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/pm/permission/Permission.java b/services/core/java/com/android/server/pm/permission/Permission.java index b421cfc952958..cda48063e9149 100644 --- a/services/core/java/com/android/server/pm/permission/Permission.java +++ b/services/core/java/com/android/server/pm/permission/Permission.java @@ -435,11 +435,12 @@ public final class Permission { } } } + boolean wasNonRuntime = permission != null && permission.mType != TYPE_CONFIG + && !permission.isRuntime(); if (permission == null) { permission = new Permission(permissionInfo.name, permissionInfo.packageName, TYPE_MANIFEST); } - boolean wasNonRuntime = !permission.isRuntime(); StringBuilder r = null; if (!permission.mReconciled) { if (permission.mPermissionInfo.packageName == null