From 5438955940a90d3aa3daf48a13740b3e0b59fd6a Mon Sep 17 00:00:00 2001 From: Phil Burk Date: Thu, 16 Dec 2021 21:54:21 +0000 Subject: MidiService: check UID in getDeviceStatus() If a MIDI device is marked private then make sure the status can only be obtained by the owner. Bug: 203549963 Test: see bug for repro steps Test: atest CtsMidiTestCases Test: https://source.android.com/devices/audio/midi_test.html Change-Id: Ibe92f1ca58c7971855453f1794564e95bfb9380d --- services/midi/java/com/android/server/midi/MidiService.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/services/midi/java/com/android/server/midi/MidiService.java b/services/midi/java/com/android/server/midi/MidiService.java index 6e724792b6e9..d56278629bf2 100644 --- a/services/midi/java/com/android/server/midi/MidiService.java +++ b/services/midi/java/com/android/server/midi/MidiService.java @@ -864,7 +864,15 @@ public class MidiService extends IMidiManager.Stub { if (device == null) { throw new IllegalArgumentException("no such device for " + deviceInfo); } - return device.getDeviceStatus(); + int uid = Binder.getCallingUid(); + if (device.isUidAllowed(uid)) { + return device.getDeviceStatus(); + } else { + Log.e(TAG, "getDeviceStatus() invalid UID = " + uid); + EventLog.writeEvent(0x534e4554, "203549963", + uid, "getDeviceStatus: invalid uid"); + return null; + } } @Override -- cgit v1.2.3-59-g8ed1b