diff options
author | Pablo Ceballos <pceballos@google.com> | 2016-02-20 11:26:13 -0800 |
---|---|---|
committer | The Android Automerger <android-build@android.com> | 2016-03-01 13:27:27 -0800 |
commit | a1200353b2a9340cf97f30c13b03029cc2204c6a (patch) | |
tree | f70117974b13c0285cf6655ff790508718bb2c4b | |
parent | f748846573fa4f205456aff6cbdd1bcf539436dd (diff) | |
download | native-a1200353b2a9340cf97f30c13b03029cc2204c6a.tar.gz |
Manual cherry-pick f5c880cb8e29ec90cf47866f0375799537dcda87 to resolve cherry pick issue
Add SN logging
Bug 27046057
Change-Id: Iede7c92e59e60795df1ec7768ebafd6b090f1c27
(cherry picked from commit d46695bb661ee294a0778e403044cd910c233ec1)
-rw-r--r-- | libs/gui/BufferQueueConsumer.cpp | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/libs/gui/BufferQueueConsumer.cpp b/libs/gui/BufferQueueConsumer.cpp index bb3e1b0a4d..7504ed49b9 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) : @@ -572,7 +576,18 @@ 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); + android_errorWriteWithInfoLog(0x534e4554, "27046057", uid, NULL, 0); + } else { + mCore->dump(result, prefix); + } } } // namespace android |