diff options
author | Evan Severson <evanseverson@google.com> | 2020-04-30 17:03:48 -0700 |
---|---|---|
committer | Evan Severson <evanseverson@google.com> | 2020-05-01 11:04:12 -0700 |
commit | b07f0599bb2fabceba715ca89b78a194ef999bba (patch) | |
tree | b5d816e88da482d307eb2678d57717355b1931c6 /services/voiceinteraction | |
parent | 75c82108f61dcf64c00feb4633448670645d79ec (diff) |
Check permission for soundtrigger detection service
The app which gets bound to use microphone in the background should be
holding the CAPTURE_AUDIO_HOTWORD permission.
Test: Verify current services still work
Verify that app without permission can't be registered
Bug: 155438570
Change-Id: I4b53c45bc74df4e91026e13c7e2bfa0f5461df52
Diffstat (limited to 'services/voiceinteraction')
-rw-r--r-- | services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java index 170bee841e74..42e2bbf08834 100644 --- a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java +++ b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java @@ -443,6 +443,8 @@ public class SoundTriggerService extends SystemService { enforceCallingPermission(Manifest.permission.MANAGE_SOUND_TRIGGER); + enforceDetectionPermissions(detectionService); + if (!isInitialized()) return STATUS_ERROR; if (DEBUG) { Slog.i(TAG, "startRecognition(): id = " + soundModelId); @@ -1532,6 +1534,16 @@ public class SoundTriggerService extends SystemService { } } + private void enforceDetectionPermissions(ComponentName detectionService) { + PackageManager packageManager = mContext.getPackageManager(); + String packageName = detectionService.getPackageName(); + if (packageManager.checkPermission(Manifest.permission.CAPTURE_AUDIO_HOTWORD, packageName) + != PackageManager.PERMISSION_GRANTED) { + throw new SecurityException(detectionService.getPackageName() + " does not have" + + " permission " + Manifest.permission.CAPTURE_AUDIO_HOTWORD); + } + } + //================================================================= // For logging |