diff options
| author | 2022-04-20 17:40:02 +0100 | |
|---|---|---|
| committer | 2022-04-21 13:18:30 +0000 | |
| commit | 4b945427b9cd0823728c43429209f4ba598cba89 (patch) | |
| tree | 04eccd11b181ac7ef56525820058740825c294b7 | |
| parent | 71e2f74d9a4d335f7a7a9e3561a558ed57dc9904 (diff) | |
speech: Mask client identity when running the package manager call
Allow speech recognizers to list all the recognition services.
Bug: 210471821
Test: manual by reproducing the corresponding bug
Change-Id: If2dc9b81e26ca531cadd0ca25e207db036df9cdc
| -rw-r--r-- | services/core/java/com/android/server/speech/SpeechRecognitionManagerServiceImpl.java | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/speech/SpeechRecognitionManagerServiceImpl.java b/services/core/java/com/android/server/speech/SpeechRecognitionManagerServiceImpl.java index ae23b9e46d23..5db4a7b4a6f6 100644 --- a/services/core/java/com/android/server/speech/SpeechRecognitionManagerServiceImpl.java +++ b/services/core/java/com/android/server/speech/SpeechRecognitionManagerServiceImpl.java @@ -268,9 +268,17 @@ final class SpeechRecognitionManagerServiceImpl extends } private boolean componentMapsToRecognitionService(@NonNull ComponentName serviceComponent) { - List<ResolveInfo> resolveInfos = - getContext().getPackageManager().queryIntentServicesAsUser( - new Intent(RecognitionService.SERVICE_INTERFACE), 0, getUserId()); + List<ResolveInfo> resolveInfos; + + final long identityToken = Binder.clearCallingIdentity(); + try { + resolveInfos = + getContext().getPackageManager().queryIntentServicesAsUser( + new Intent(RecognitionService.SERVICE_INTERFACE), 0, getUserId()); + } finally { + Binder.restoreCallingIdentity(identityToken); + } + if (resolveInfos == null) { return false; } |