summaryrefslogtreecommitdiff
path: root/libs/gui/BufferQueueConsumer.cpp
diff options
context:
space:
mode:
author Pablo Ceballos <pceballos@google.com> 2016-02-20 00:06:10 +0000
committer android-build-merger <android-build-merger@google.com> 2016-02-20 00:06:10 +0000
commitf419ec1bfb969f1add4c90b5b188041968f5f227 (patch)
treee6425a217ef53797c024badd627413e9f2673d22 /libs/gui/BufferQueueConsumer.cpp
parentebdad60d6b0560493e50092c30888d3a7b5cc8c9 (diff)
parent7e83de0114538b006b4299fd608983ecd61b6422 (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.cpp16
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