From bd1153382e7a9d89922bea999a52ca21d46d6caa Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Thu, 18 Apr 2013 16:41:04 -0700 Subject: [PATCH] allow dumpsys SurfaceFlinger in user builds from the shell user Bug: 8659013 Change-Id: I1de43bb5808cb8c1103cfc73dca59ff70fc13f91 --- services/surfaceflinger/SurfaceFlinger.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index dc29e48f1..e6472752e 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -2145,11 +2145,14 @@ status_t SurfaceFlinger::dump(int fd, const Vector& args) char buffer[SIZE]; String8 result; - if (!PermissionCache::checkCallingPermission(sDump)) { + + IPCThreadState* ipc = IPCThreadState::self(); + const int pid = ipc->getCallingPid(); + const int uid = ipc->getCallingUid(); + if ((uid != AID_SHELL) && + !PermissionCache::checkPermission(sDump, pid, uid)) { snprintf(buffer, SIZE, "Permission Denial: " - "can't dump SurfaceFlinger from pid=%d, uid=%d\n", - IPCThreadState::self()->getCallingPid(), - IPCThreadState::self()->getCallingUid()); + "can't dump SurfaceFlinger from pid=%d, uid=%d\n", pid, uid); result.append(buffer); } else { // Try to get the main lock, but don't insist if we can't