summaryrefslogtreecommitdiff
path: root/libs/ui/ISurfaceFlingerClient.cpp
diff options
context:
space:
mode:
author Jean-Baptiste Queru <jbq@google.com> 2009-07-21 11:16:54 -0700
committer Jean-Baptiste Queru <jbq@google.com> 2009-07-21 11:16:54 -0700
commit4d3b5c1e36f2a3746a1c87f8af97d4fe97e8f49e (patch)
tree253e04766c56308bdea922e22a75acafa43b666f /libs/ui/ISurfaceFlingerClient.cpp
parent512837cef2b7203123d0b8df7ad49454ce932a75 (diff)
donut snapshot
Diffstat (limited to 'libs/ui/ISurfaceFlingerClient.cpp')
-rw-r--r--libs/ui/ISurfaceFlingerClient.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/libs/ui/ISurfaceFlingerClient.cpp b/libs/ui/ISurfaceFlingerClient.cpp
index dd6a798b98..dab5f71847 100644
--- a/libs/ui/ISurfaceFlingerClient.cpp
+++ b/libs/ui/ISurfaceFlingerClient.cpp
@@ -35,6 +35,13 @@
// ---------------------------------------------------------------------------
+/* ideally AID_GRAPHICS would be in a semi-public header
+ * or there would be a way to map a user/group name to its id
+ */
+#ifndef AID_GRAPHICS
+#define AID_GRAPHICS 1003
+#endif
+
#define LIKELY( exp ) (__builtin_expect( (exp) != 0, true ))
#define UNLIKELY( exp ) (__builtin_expect( (exp) != 0, false ))
@@ -136,13 +143,13 @@ status_t BnSurfaceFlingerClient::onTransact(
IPCThreadState* ipc = IPCThreadState::self();
const int pid = ipc->getCallingPid();
- const int self_pid = getpid();
- if (UNLIKELY(pid != self_pid)) {
+ const int uid = ipc->getCallingUid();
+ const int self_pid = getpid();
+ if (UNLIKELY(pid != self_pid && uid != AID_GRAPHICS)) {
// we're called from a different process, do the real check
if (!checkCallingPermission(
String16("android.permission.ACCESS_SURFACE_FLINGER")))
{
- const int uid = ipc->getCallingUid();
LOGE("Permission Denial: "
"can't openGlobalTransaction pid=%d, uid=%d", pid, uid);
return PERMISSION_DENIED;