diff options
| author | 2019-02-15 00:43:31 +0000 | |
|---|---|---|
| committer | 2019-02-15 00:43:31 +0000 | |
| commit | cec740470c12b10c5b9df1b73066ff18defdc74a (patch) | |
| tree | 854c67c4207f3174942d9c8719b9fa3683741254 | |
| parent | ca2abcf73514cafb180d0ace1988a72c715cd0fb (diff) | |
| parent | 6e14477fcee9e4ce2dc79c3fcb18e3b17e2f789e (diff) | |
Merge "Prevent 3rd party app from turning on speaker during the system call Test: manual"
| -rw-r--r-- | services/core/java/com/android/server/audio/AudioService.java | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index 455a3e302480..e698b841a2fd 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -3260,6 +3260,21 @@ public class AudioService extends IAudioService.Stub if (!checkAudioSettingsPermission("setSpeakerphoneOn()")) { return; } + + if (mContext.checkCallingOrSelfPermission( + android.Manifest.permission.MODIFY_PHONE_STATE) + != PackageManager.PERMISSION_GRANTED) { + synchronized (mSetModeDeathHandlers) { + for (SetModeDeathHandler h : mSetModeDeathHandlers) { + if (h.getMode() == AudioSystem.MODE_IN_CALL) { + Log.w(TAG, "getMode is call, Permission Denial: setSpeakerphoneOn from pid=" + + Binder.getCallingPid() + ", uid=" + Binder.getCallingUid()); + return; + } + } + } + } + // for logging only final String eventSource = new StringBuilder("setSpeakerphoneOn(").append(on) .append(") from u/pid:").append(Binder.getCallingUid()).append("/") |