summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Severson <evanseverson@google.com>2020-04-30 17:03:48 -0700
committerEvan Severson <evanseverson@google.com>2020-05-01 11:04:12 -0700
commitb07f0599bb2fabceba715ca89b78a194ef999bba (patch)
treeb5d816e88da482d307eb2678d57717355b1931c6
parent75c82108f61dcf64c00feb4633448670645d79ec (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
-rw-r--r--services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java12
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