From 7d27732fef9297fbe1ef5d11fa41a82c90d40aa6 Mon Sep 17 00:00:00 2001 From: Evan Chen Date: Thu, 16 Feb 2023 21:26:34 +0000 Subject: [PATCH] Don't require MANAGE_ROLE_HOLDERS when removing CDM associatons Bug: 260374250 Test: CTS test Change-Id: I4478364cb1b7f295f6750d23bafe0c051a1119d3 --- .../java/com/android/server/companion/RolesUtils.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/services/companion/java/com/android/server/companion/RolesUtils.java b/services/companion/java/com/android/server/companion/RolesUtils.java index f674a7d20b822..163f614fb65d6 100644 --- a/services/companion/java/com/android/server/companion/RolesUtils.java +++ b/services/companion/java/com/android/server/companion/RolesUtils.java @@ -27,6 +27,7 @@ import android.annotation.UserIdInt; import android.app.role.RoleManager; import android.companion.AssociationInfo; import android.content.Context; +import android.os.Binder; import android.os.UserHandle; import android.util.Log; import android.util.Slog; @@ -84,7 +85,9 @@ final class RolesUtils { Slog.i(TAG, "Removing CDM role holder, role=" + deviceProfile + ", package=u" + userId + "\\" + packageName); - roleManager.removeRoleHolderAsUser(deviceProfile, packageName, + final long identity = Binder.clearCallingIdentity(); + try { + roleManager.removeRoleHolderAsUser(deviceProfile, packageName, MANAGE_HOLDERS_FLAG_DONT_KILL_APP, userHandle, context.getMainExecutor(), success -> { if (!success) { @@ -92,6 +95,9 @@ final class RolesUtils { + " from the list of " + deviceProfile + " holders."); } }); + } finally { + Binder.restoreCallingIdentity(identity); + } } private RolesUtils() {};