OSDN Git Service

allow dumpsys SurfaceFlinger in user builds from the shell user
authorMathias Agopian <mathias@google.com>
Thu, 18 Apr 2013 23:41:04 +0000 (16:41 -0700)
committerMathias Agopian <mathias@google.com>
Thu, 18 Apr 2013 23:41:04 +0000 (16:41 -0700)
Bug: 8659013
Change-Id: I1de43bb5808cb8c1103cfc73dca59ff70fc13f91

services/surfaceflinger/SurfaceFlinger.cpp

index dc29e48..e647275 100644 (file)
@@ -2145,11 +2145,14 @@ status_t SurfaceFlinger::dump(int fd, const Vector<String16>& 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