Merge "ServiceUtilities: don't do RECORD_AUDIO check for system server" into qt-qpr1-dev

am: 804b87d1f8

Change-Id: I2b0828faf0e54ce58465edd5c97c564ee829168f
gugelfrei
Jeffrey Carlyle 5 years ago committed by android-build-merger
commit 99a94746c9

@ -30,6 +30,7 @@ cc_library {
],
shared_libs: [
"libbinder",
"libcutils",
"liblog",
"libutils",
"libhidlbase",

@ -63,7 +63,10 @@ static bool checkRecordingInternal(const String16& opPackageName, pid_t pid,
uid_t uid, bool start) {
// Okay to not track in app ops as audio server is us and if
// device is rooted security model is considered compromised.
if (isAudioServerOrRootUid(uid)) return true;
// system_server loses its RECORD_AUDIO permission when a secondary
// user is active, but it is a core system service so let it through.
// TODO(b/141210120): UserManager.DISALLOW_RECORD_AUDIO should not affect system user 0
if (isAudioServerOrSystemServerOrRootUid(uid)) return true;
// We specify a pid and uid here as mediaserver (aka MediaRecorder or StageFrightRecorder)
// may open a record track on behalf of a client. Note that pid may be a tid.

@ -58,6 +58,12 @@ static inline bool isAudioServerOrSystemServerUid(uid_t uid) {
return multiuser_get_app_id(uid) == AID_SYSTEM || uid == AID_AUDIOSERVER;
}
// used for calls that should come from system_server or audio_server and
// include AID_ROOT for command-line tests.
static inline bool isAudioServerOrSystemServerOrRootUid(uid_t uid) {
return multiuser_get_app_id(uid) == AID_SYSTEM || uid == AID_AUDIOSERVER || uid == AID_ROOT;
}
// Mediaserver may forward the client PID and UID as part of a binder interface call;
// otherwise the calling UID must be equal to the client UID.
static inline bool isAudioServerOrMediaServerUid(uid_t uid) {

Loading…
Cancel
Save