diff options
author | Chien-Yu Chen <cychen@google.com> | 2015-12-18 14:10:33 -0800 |
---|---|---|
committer | Chien-Yu Chen <cychen@google.com> | 2016-01-25 17:47:12 -0800 |
commit | 98a668f6ea51e4d894d2ebb61a0e18287fb14008 (patch) | |
tree | 2e0942e593e58b5b6c44b87526a35dbf3d808b34 /camera/CameraBase.cpp | |
parent | 1f36e3b27abfb16bc5e788e253d367eff4886dba (diff) |
Camera: Fix client permission check
Modify StageFright's CameraSource to forward calling PID as
client PID when connecting to CameraService so CameraService
can check if the client PID has permission to use camera.
Change CameraService to check calling UID is trusted before
using the passed in client PID and client UID to verify permission.
Bug: 24511454
Change-Id: I4906ab73510e2c75714690bed675e3c13aca3ccf
Diffstat (limited to 'camera/CameraBase.cpp')
-rw-r--r-- | camera/CameraBase.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/camera/CameraBase.cpp b/camera/CameraBase.cpp index 5d50aa8223..9ee7ae5014 100644 --- a/camera/CameraBase.cpp +++ b/camera/CameraBase.cpp @@ -92,7 +92,7 @@ const sp<ICameraService>& CameraBase<TCam, TCamTraits>::getCameraService() template <typename TCam, typename TCamTraits> sp<TCam> CameraBase<TCam, TCamTraits>::connect(int cameraId, const String16& clientPackageName, - int clientUid) + int clientUid, int clientPid) { ALOGV("%s: connect", __FUNCTION__); sp<TCam> c = new TCam(cameraId); @@ -103,7 +103,7 @@ sp<TCam> CameraBase<TCam, TCamTraits>::connect(int cameraId, if (cs != 0) { TCamConnectService fnConnectService = TCamTraits::fnConnectService; status = (cs.get()->*fnConnectService)(cl, cameraId, clientPackageName, clientUid, - /*out*/ c->mCamera); + clientPid, /*out*/ c->mCamera); } if (status == OK && c->mCamera != 0) { IInterface::asBinder(c->mCamera)->linkToDeath(c); |