Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 804b87d1 authored by Jeffrey Carlyle's avatar Jeffrey Carlyle Committed by Android (Google) Code Review
Browse files

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

parents 727ba2ad 62cc92bb
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ cc_library {
    ],
    shared_libs: [
        "libbinder",
        "libcutils",
        "liblog",
        "libutils",
        "libmemunreachable",
+4 −1
Original line number Diff line number Diff line
@@ -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.
+6 −0
Original line number Diff line number Diff line
@@ -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) {