diff options
| author | 2016-02-20 00:06:10 +0000 | |
|---|---|---|
| committer | 2016-02-20 00:06:10 +0000 | |
| commit | f419ec1bfb969f1add4c90b5b188041968f5f227 (patch) | |
| tree | e6425a217ef53797c024badd627413e9f2673d22 /libs/gui/BufferQueueConsumer.cpp | |
| parent | ebdad60d6b0560493e50092c30888d3a7b5cc8c9 (diff) | |
| parent | 7e83de0114538b006b4299fd608983ecd61b6422 (diff) | |
Merge "BQ: Add permission check to BufferQueueConsumer::dump" into lmp-dev am: 793be16dd3
am: 7e83de0114
* commit '7e83de0114538b006b4299fd608983ecd61b6422':
BQ: Add permission check to BufferQueueConsumer::dump
Diffstat (limited to 'libs/gui/BufferQueueConsumer.cpp')
| -rw-r--r-- | libs/gui/BufferQueueConsumer.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/libs/gui/BufferQueueConsumer.cpp b/libs/gui/BufferQueueConsumer.cpp index c7d5e00326..0ae78b5913 100644 --- a/libs/gui/BufferQueueConsumer.cpp +++ b/libs/gui/BufferQueueConsumer.cpp @@ -26,6 +26,10 @@ #include <gui/IConsumerListener.h> #include <gui/IProducerListener.h> +#include <binder/IPCThreadState.h> +#include <binder/PermissionCache.h> +#include <private/android_filesystem_config.h> + namespace android { BufferQueueConsumer::BufferQueueConsumer(const sp<BufferQueueCore>& core) : @@ -538,7 +542,17 @@ sp<NativeHandle> BufferQueueConsumer::getSidebandStream() const { } void BufferQueueConsumer::dump(String8& result, const char* prefix) const { - mCore->dump(result, prefix); + 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)) { + result.appendFormat("Permission Denial: can't dump BufferQueueConsumer " + "from pid=%d, uid=%d\n", pid, uid); + } else { + mCore->dump(result, prefix); + } } } // namespace android |