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

Commit fc8d8850 authored by Yifan Hong's avatar Yifan Hong
Browse files

Use getpwnam()/getgrnam() instead of AID_* macros (libgui)

AID_* values are defined in libcutils private headers and hence
is not exported. Use getpwnam() instead to get these values.

Test: device boots
Bug: 63135587
Change-Id: I417d0472df2170ab190c1c1622117df58292125c
Merged-In: I417d0472df2170ab190c1c1622117df58292125c
parent 3f68cca4
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -15,6 +15,8 @@
 */

#include <inttypes.h>
#include <pwd.h>
#include <sys/types.h>

#define LOG_TAG "BufferQueueConsumer"
#define ATRACE_TAG ATRACE_TAG_GRAPHICS
@@ -34,7 +36,6 @@

#include <binder/IPCThreadState.h>
#include <binder/PermissionCache.h>
#include <private/android_filesystem_config.h>

namespace android {

@@ -734,12 +735,18 @@ status_t BufferQueueConsumer::discardFreeBuffers() {
}

void BufferQueueConsumer::dumpState(String8& result, const char* prefix) const {
    struct passwd* pwd = getpwnam("shell");
    uid_t shellUid = pwd ? pwd->pw_uid : 0;
    if (!shellUid) {
        BQ_LOGE("Cannot get AID_SHELL");
        return;
    }

    const IPCThreadState* ipc = IPCThreadState::self();
    const pid_t pid = ipc->getCallingPid();
    const uid_t uid = ipc->getCallingUid();
    if ((uid != AID_SHELL)
            && !PermissionCache::checkPermission(String16(
            "android.permission.DUMP"), pid, uid)) {
    if ((uid != shellUid) &&
        !PermissionCache::checkPermission(String16("android.permission.DUMP"), pid, uid)) {
        result.appendFormat("Permission Denial: can't dump BufferQueueConsumer "
                "from pid=%d, uid=%d\n", pid, uid);
        android_errorWriteWithInfoLog(0x534e4554, "27046057",