OSDN Git Service

track UID with connections
authorMathias Agopian <mathias@google.com>
Wed, 19 Sep 2012 00:02:43 +0000 (17:02 -0700)
committerMathias Agopian <mathias@google.com>
Wed, 19 Sep 2012 06:33:36 +0000 (23:33 -0700)
Change-Id: Id4865f3cd27a95acdbbfdff1f2bb4123f312a13b

services/sensorservice/SensorService.cpp
services/sensorservice/SensorService.h

index c9b0f7c..cc2f745 100644 (file)
@@ -383,7 +383,8 @@ Vector<Sensor> SensorService::getSensorList()
 
 sp<ISensorEventConnection> SensorService::createSensorEventConnection()
 {
-    sp<SensorEventConnection> result(new SensorEventConnection(this));
+    uid_t uid = IPCThreadState::self()->getCallingUid();
+    sp<SensorEventConnection> result(new SensorEventConnection(this, uid));
     return result;
 }
 
@@ -553,8 +554,8 @@ bool SensorService::SensorRecord::removeConnection(
 // ---------------------------------------------------------------------------
 
 SensorService::SensorEventConnection::SensorEventConnection(
-        const sp<SensorService>& service)
-    : mService(service), mChannel(new BitTube())
+        const sp<SensorService>& service, uid_t uid)
+    : mService(service), mChannel(new BitTube()), mUid(uid)
 {
 }
 
index 54a76e8..18591bf 100644 (file)
@@ -77,13 +77,14 @@ class SensorService :
 
         sp<SensorService> const mService;
         sp<BitTube> const mChannel;
+        uid_t mUid;
         mutable Mutex mConnectionLock;
 
         // protected by SensorService::mLock
         SortedVector<int> mSensorInfo;
 
     public:
-        SensorEventConnection(const sp<SensorService>& service);
+        SensorEventConnection(const sp<SensorService>& service, uid_t uid);
 
         status_t sendEvents(sensors_event_t const* buffer, size_t count,
                 sensors_event_t* scratch = NULL);
@@ -91,6 +92,8 @@ class SensorService :
         bool hasAnySensor() const;
         bool addSensor(int32_t handle);
         bool removeSensor(int32_t handle);
+
+        uid_t getUid() const { return mUid; }
     };
 
     class SensorRecord {