diff options
| author | 2017-08-03 20:34:22 +0000 | |
|---|---|---|
| committer | 2017-08-03 20:34:22 +0000 | |
| commit | 5cd3d789b8fd270ee325b5ec749506d1cc8628cc (patch) | |
| tree | 849c096cc48b991e42a64b93e9424e2a2ebcc8f1 /libs/gui/BufferQueueConsumer.cpp | |
| parent | 20af756089dd4e836461e949c0585624f3327c1f (diff) | |
| parent | 84548cfbfb397ae66d0d71c520ce01864e377b6d (diff) | |
Merge commit '219b580fed7916ed4e02dd634e003073f91c6b93' into manual_merge_219b580fe
am: 84548cfbfb
Change-Id: If48564795bbe12183be06d60bdfa757819b418c8
Diffstat (limited to 'libs/gui/BufferQueueConsumer.cpp')
| -rw-r--r-- | libs/gui/BufferQueueConsumer.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/libs/gui/BufferQueueConsumer.cpp b/libs/gui/BufferQueueConsumer.cpp index 5e5de443f4..873814913f 100644 --- a/libs/gui/BufferQueueConsumer.cpp +++ b/libs/gui/BufferQueueConsumer.cpp @@ -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", |