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

Commit 84548cfb authored by Yifan Hong's avatar Yifan Hong
Browse files

Merge commit '219b580f' into manual_merge_219b580fe

Test: pass
Change-Id: Ic796fced51004d4a716c754fc8c0d347c33af8ff
parents 0cb1c492 219b580f
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -8,10 +8,9 @@
#include <stdlib.h>
#include <string.h>

#include <cutils/android_filesystem_config.h>
#include <cutils/multiuser.h>

#include <private/android_filesystem_config.h>

#include <selinux/android.h>
#include <selinux/avc.h>

+12 −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 {

@@ -745,12 +746,19 @@ status_t BufferQueueConsumer::discardFreeBuffers() {
}

status_t BufferQueueConsumer::dumpState(const String8& prefix, String8* outResult) const {
    struct passwd* pwd = getpwnam("shell");
    uid_t shellUid = pwd ? pwd->pw_uid : 0;
    if (!shellUid) {
        int savedErrno = errno;
        BQ_LOGE("Cannot get AID_SHELL");
        return savedErrno ? -savedErrno : UNKNOWN_ERROR;
    }

    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)) {
        outResult->appendFormat("Permission Denial: can't dump BufferQueueConsumer "
                "from pid=%d, uid=%d\n", pid, uid);
        android_errorWriteWithInfoLog(0x534e4554, "27046057",