summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Eric Laurent <elaurent@google.com> 2019-02-15 00:43:31 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2019-02-15 00:43:31 +0000
commitcec740470c12b10c5b9df1b73066ff18defdc74a (patch)
tree854c67c4207f3174942d9c8719b9fa3683741254
parentca2abcf73514cafb180d0ace1988a72c715cd0fb (diff)
parent6e14477fcee9e4ce2dc79c3fcb18e3b17e2f789e (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.java15
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("/")