diff options
author | Phil Burk <philburk@google.com> | 2021-04-28 00:30:17 +0000 |
---|---|---|
committer | Phil Burk <philburk@google.com> | 2021-04-28 18:17:25 +0000 |
commit | 45b773a96dcffed2ee327c7353693266f472eb04 (patch) | |
tree | 798ee10f8d7d3aa554478a8bf5523bfa7bc235ff | |
parent | cbfb5f4584dd5dd2e9aaf41bd935eaa78bd9d1b1 (diff) |
MidiService: protect private service info
Check for callers UID before returning MidiDeviceInfo.
Bug: 185796676
Test: see bug for repro steps
Test: atest CtsMidiTestCases
Test: https://source.android.com/devices/audio/midi_test.html
Change-Id: I4d5b8eca7457fa9b772e30e2f641bddb766177ee
-rw-r--r-- | services/midi/java/com/android/server/midi/MidiService.java | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/services/midi/java/com/android/server/midi/MidiService.java b/services/midi/java/com/android/server/midi/MidiService.java index 47505a398a6f..e31be82bcff7 100644 --- a/services/midi/java/com/android/server/midi/MidiService.java +++ b/services/midi/java/com/android/server/midi/MidiService.java @@ -43,6 +43,7 @@ import android.os.IBinder; import android.os.Process; import android.os.RemoteException; import android.os.UserHandle; +import android.util.EventLog; import android.util.Log; import com.android.internal.content.PackageMonitor; @@ -736,13 +737,19 @@ public class MidiService extends IMidiManager.Stub { @Override public MidiDeviceInfo getServiceDeviceInfo(String packageName, String className) { + int uid = Binder.getCallingUid(); synchronized (mDevicesByInfo) { for (Device device : mDevicesByInfo.values()) { ServiceInfo serviceInfo = device.getServiceInfo(); if (serviceInfo != null && packageName.equals(serviceInfo.packageName) && className.equals(serviceInfo.name)) { - return device.getDeviceInfo(); + if (device.isUidAllowed(uid)) { + return device.getDeviceInfo(); + } else { + EventLog.writeEvent(0x534e4554, "185796676", -1, ""); + return null; + } } } return null; |