summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Eric Laurent <elaurent@google.com> 2019-02-14 22:16:34 -0800
committer android-build-merger <android-build-merger@google.com> 2019-02-14 22:16:34 -0800
commit443bb50def59b4b700b3d27b95a28974b18c4e6f (patch)
treef384fcaf5017dddaa82875a494101419fc391ab1
parentedf9cd7bc343a47eb64cea70ce9cc074fdba7cab (diff)
parent09c1453b05fb950f868b4c0d0ce7ecf510df0854 (diff)
Merge "Prevent 3rd party app from turning on speaker during the system call Test: manual" am: cec740470c am: e6fc1209f1
am: 09c1453b05 Change-Id: Id9ecd08af0cce81cf1be361d041c3ae375476e81
-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 a6643d49c79f..fbabc82ed65d 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -3217,6 +3217,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("/")