From f049197e3c39d33fe475d47ba9896ed66f2e1e78 Mon Sep 17 00:00:00 2001 From: Jean-Michel Trivi Date: Tue, 24 Mar 2020 09:20:50 -0700 Subject: [PATCH] setWiredDeviceConnectionState requires MODIFY_AUDIO_ROUTING AudioService: make setWiredDeviceConnectionState enforce the privileged MODIFY_AUDIO_ROUTING permission Bug: 151240738 Test: verify plug/unplug headset is WAI Change-Id: Icde5c2fdfa970baf596d00f808dca8300be8743f --- media/java/android/media/AudioManager.java | 1 + services/core/java/com/android/server/audio/AudioService.java | 1 + 2 files changed, 2 insertions(+) diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java index 383202b205501..fffdd683f22cc 100644 --- a/media/java/android/media/AudioManager.java +++ b/media/java/android/media/AudioManager.java @@ -4579,6 +4579,7 @@ public class AudioManager { * {@hide} */ @UnsupportedAppUsage + @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void setWiredDeviceConnectionState(int type, int state, String address, String name) { final IAudioService service = getService(); try { diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index f3d42ad1c7931..adc0f9fe15048 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -4570,6 +4570,7 @@ public class AudioService extends IAudioService.Stub public void setWiredDeviceConnectionState(int type, @ConnectionState int state, String address, String name, String caller) { + enforceModifyAudioRoutingPermission(); if (state != CONNECTION_STATE_CONNECTED && state != CONNECTION_STATE_DISCONNECTED) { throw new IllegalArgumentException("Invalid state " + state);