From e835b9847e7ceb71b8181f3af9d2f7f5c6db652d Mon Sep 17 00:00:00 2001 From: Nicholas Ambur Date: Mon, 16 Nov 2020 17:47:32 -0800 Subject: [PATCH] fix SoundTrigger overwriting session identity SoundTrigger tracks client UID for every session. This CL fixes an issue with client UID being saved twice causing the incorrect client UID to be saved. Bug: 171342256 Test: boot and verify hotword is functional Change-Id: I68bba238293ed5a74f5a3677f21e5122cc444f82 --- .../soundtrigger/SoundTriggerInternal.java | 7 +------ .../soundtrigger/SoundTriggerService.java | 18 ++---------------- .../VoiceInteractionManagerService.java | 3 +-- 3 files changed, 4 insertions(+), 24 deletions(-) diff --git a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerInternal.java b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerInternal.java index a976257a9ad17..7cec783fb7c05 100644 --- a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerInternal.java +++ b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerInternal.java @@ -47,12 +47,7 @@ public interface SoundTriggerInternal { int STATUS_ERROR = SoundTrigger.STATUS_ERROR; int STATUS_OK = SoundTrigger.STATUS_OK; - Session attachAsOriginator(@NonNull Identity originatorIdentity, - @NonNull IBinder client); - - Session attachAsMiddleman(@NonNull Identity middlemanIdentity, - @NonNull Identity originatorIdentity, - @NonNull IBinder client); + Session attach(@NonNull IBinder client); /** * Dumps service-wide information. diff --git a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java index 6c9f41c102b3d..2a5bfce9bb331 100644 --- a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java +++ b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java @@ -1545,22 +1545,8 @@ public class SoundTriggerService extends SystemService { } @Override - public Session attachAsOriginator(@NonNull Identity originatorIdentity, - @NonNull IBinder client) { - try (SafeCloseable ignored = PermissionUtil.establishIdentityDirect( - originatorIdentity)) { - return new SessionImpl(newSoundTriggerHelper(), client); - } - } - - @Override - public Session attachAsMiddleman(@NonNull Identity middlemanIdentity, - @NonNull Identity originatorIdentity, - @NonNull IBinder client) { - try (SafeCloseable ignored = PermissionUtil.establishIdentityIndirect(mContext, - SOUNDTRIGGER_DELEGATE_IDENTITY, middlemanIdentity, originatorIdentity)) { - return new SessionImpl(newSoundTriggerHelper(), client); - } + public Session attach(@NonNull IBinder client) { + return new SessionImpl(newSoundTriggerHelper(), client); } @Override diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java index 2bcf3b55af1e6..657a7dd84bdfd 100644 --- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java +++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java @@ -262,8 +262,7 @@ public class VoiceInteractionManagerService extends SystemService { try (SafeCloseable ignored = PermissionUtil.establishIdentityDirect( originatorIdentity)) { SoundTriggerSession session = new SoundTriggerSession( - mSoundTriggerInternal.attachAsOriginator(IdentityContext.getNonNull(), - client)); + mSoundTriggerInternal.attach(client)); synchronized (mSessions) { mSessions.add(new WeakReference<>(session)); }