From a4b3863cff9420edba98cdab66787857f9d264aa Mon Sep 17 00:00:00 2001 From: Atneya Nair Date: Fri, 17 Feb 2023 16:50:22 -0800 Subject: [PATCH] Reset identity context in STService Middleware service uses binder identity to validate permissions. For now, clear the binder identity before calling downwards. In the future, remove this behavior in middleware service. Test: AGSA starts recognition successfully Bug: 269765333 Change-Id: Ie33ffbbb6d2aa84d3da9ec6f5f8af0ab3a12af75 --- .../server/soundtrigger/SoundTriggerService.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java index 1400886665362..70af33796ad12 100644 --- a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java +++ b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java @@ -1647,13 +1647,16 @@ public class SoundTriggerService extends SystemService { @Override public List listModuleProperties(Identity originatorIdentity) { - Identity identity = new Identity(); - identity.packageName = ActivityThread.currentOpPackageName(); ArrayList moduleList = new ArrayList<>(); - // Overwrite with our own identity to fix permission issues. - // VIMService always does its own validation, so this is fine. - // TODO(b/269765333) - SoundTrigger.listModulesAsOriginator(moduleList, identity); + try (SafeCloseable ignored = PermissionUtil.establishIdentityDirect( + originatorIdentity)) { + Identity middlemanIdentity = new Identity(); + middlemanIdentity.uid = Binder.getCallingUid(); + middlemanIdentity.pid = Binder.getCallingPid(); + middlemanIdentity.packageName = ActivityThread.currentOpPackageName(); + SoundTrigger.listModulesAsMiddleman(moduleList, middlemanIdentity, + originatorIdentity); + } return moduleList; }