diff options
Diffstat (limited to 'libs/gui/BufferQueueConsumer.cpp')
| -rw-r--r-- | libs/gui/BufferQueueConsumer.cpp | 15 | 
1 files changed, 11 insertions, 4 deletions
diff --git a/libs/gui/BufferQueueConsumer.cpp b/libs/gui/BufferQueueConsumer.cpp index ee4c58cfce..17ff24983c 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 { @@ -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",  |