diff options
| author | Eino-Ville Talvala <etalvala@google.com> | 2016-01-15 00:26:12 +0000 |
|---|---|---|
| committer | android-build-merger <android-build-merger@google.com> | 2016-01-15 00:26:12 +0000 |
| commit | 6313e262f90683d46e4bdbe7b59df47c432b5772 (patch) | |
| tree | 26faf554c76eb8b293c7948dae0d8bdefb351215 | |
| parent | 0945199000aaa5a628705de69f17d28a5c04cc36 (diff) | |
| parent | 1ab7985b88febde58352c7410c26dcca35b7043a (diff) | |
| download | frameworks_av-6313e262f90683d46e4bdbe7b59df47c432b5772.zip frameworks_av-6313e262f90683d46e4bdbe7b59df47c432b5772.tar.gz frameworks_av-6313e262f90683d46e4bdbe7b59df47c432b5772.tar.bz2 | |
resolve merge conflicts of 88b736a198 to lmp-dev. am: 899823966e am: 0fefc974ff am: 295a488e49
am: 1ab7985b88
* commit '1ab7985b88febde58352c7410c26dcca35b7043a':
Camera: Disallow dumping clients directly
12 files changed, 43 insertions, 5 deletions
diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp index 1232c32..a144753 100644 --- a/services/camera/libcameraservice/CameraService.cpp +++ b/services/camera/libcameraservice/CameraService.cpp @@ -1425,6 +1425,14 @@ void CameraService::BasicClient::disconnect() { mClientPid = 0; } +status_t CameraService::BasicClient::dump(int, const Vector<String16>&) { + // No dumping of clients directly over Binder, + // must go through CameraService::dump + android_errorWriteWithInfoLog(SN_EVENT_LOG_ID, "26265403", + IPCThreadState::self()->getCallingUid(), NULL, 0); + return OK; +} + status_t CameraService::BasicClient::startCameraOps() { int32_t res; // Notify app ops that the camera is not available @@ -1695,7 +1703,7 @@ status_t CameraService::dump(int fd, const Vector<String16>& args) { hasClient = true; result = String8::format(" Device is open. Client instance dump:\n"); write(fd, result.string(), result.size()); - client->dump(fd, args); + client->dumpClient(fd, args); } if (!hasClient) { result = String8::format("\nNo active camera clients yet.\n"); diff --git a/services/camera/libcameraservice/CameraService.h b/services/camera/libcameraservice/CameraService.h index 126d8d9..fd2a2ee 100644 --- a/services/camera/libcameraservice/CameraService.h +++ b/services/camera/libcameraservice/CameraService.h @@ -58,6 +58,9 @@ public: class Client; class BasicClient; + // Event log ID + static const int SN_EVENT_LOG_ID = 0x534e4554; + // Implementation of BinderService<T> static char const* getServiceName() { return "media.camera"; } @@ -165,7 +168,10 @@ public: return mRemoteBinder; } - virtual status_t dump(int fd, const Vector<String16>& args) = 0; + // Disallows dumping over binder interface + virtual status_t dump(int fd, const Vector<String16>& args); + // Internal dump method to be called by CameraService + virtual status_t dumpClient(int fd, const Vector<String16>& args) = 0; protected: BasicClient(const sp<CameraService>& cameraService, diff --git a/services/camera/libcameraservice/api1/Camera2Client.cpp b/services/camera/libcameraservice/api1/Camera2Client.cpp index 0ed5586..cd808db 100644 --- a/services/camera/libcameraservice/api1/Camera2Client.cpp +++ b/services/camera/libcameraservice/api1/Camera2Client.cpp @@ -162,6 +162,10 @@ Camera2Client::~Camera2Client() { } status_t Camera2Client::dump(int fd, const Vector<String16>& args) { + return BasicClient::dump(fd, args); +} + +status_t Camera2Client::dumpClient(int fd, const Vector<String16>& args) { String8 result; result.appendFormat("Client2[%d] (%p) Client: %s PID: %d, dump:\n", mCameraId, diff --git a/services/camera/libcameraservice/api1/Camera2Client.h b/services/camera/libcameraservice/api1/Camera2Client.h index d68bb29..abee797 100644 --- a/services/camera/libcameraservice/api1/Camera2Client.h +++ b/services/camera/libcameraservice/api1/Camera2Client.h @@ -98,6 +98,8 @@ public: virtual status_t dump(int fd, const Vector<String16>& args); + virtual status_t dumpClient(int fd, const Vector<String16>& args); + /** * Interface used by CameraDeviceBase */ diff --git a/services/camera/libcameraservice/api1/CameraClient.cpp b/services/camera/libcameraservice/api1/CameraClient.cpp index bbb2fe0..d1b929e 100644 --- a/services/camera/libcameraservice/api1/CameraClient.cpp +++ b/services/camera/libcameraservice/api1/CameraClient.cpp @@ -113,6 +113,10 @@ CameraClient::~CameraClient() { } status_t CameraClient::dump(int fd, const Vector<String16>& args) { + return BasicClient::dump(fd, args); +} + +status_t CameraClient::dumpClient(int fd, const Vector<String16>& args) { const size_t SIZE = 256; char buffer[SIZE]; diff --git a/services/camera/libcameraservice/api1/CameraClient.h b/services/camera/libcameraservice/api1/CameraClient.h index 63a9d0f..eda1a9f 100644 --- a/services/camera/libcameraservice/api1/CameraClient.h +++ b/services/camera/libcameraservice/api1/CameraClient.h @@ -70,7 +70,9 @@ public: status_t initialize(camera_module_t *module); - status_t dump(int fd, const Vector<String16>& args); + virtual status_t dump(int fd, const Vector<String16>& args); + + virtual status_t dumpClient(int fd, const Vector<String16>& args); private: diff --git a/services/camera/libcameraservice/api2/CameraDeviceClient.cpp b/services/camera/libcameraservice/api2/CameraDeviceClient.cpp index 6a1ee44..8f2d3cc 100644 --- a/services/camera/libcameraservice/api2/CameraDeviceClient.cpp +++ b/services/camera/libcameraservice/api2/CameraDeviceClient.cpp @@ -581,6 +581,10 @@ status_t CameraDeviceClient::flush(int64_t* lastFrameNumber) { } status_t CameraDeviceClient::dump(int fd, const Vector<String16>& args) { + return BasicClient::dump(fd, args); +} + +status_t CameraDeviceClient::dumpClient(int fd, const Vector<String16>& args) { String8 result; result.appendFormat("CameraDeviceClient[%d] (%p) dump:\n", mCameraId, diff --git a/services/camera/libcameraservice/api2/CameraDeviceClient.h b/services/camera/libcameraservice/api2/CameraDeviceClient.h index 84e46b7..bbedb70 100644 --- a/services/camera/libcameraservice/api2/CameraDeviceClient.h +++ b/services/camera/libcameraservice/api2/CameraDeviceClient.h @@ -123,6 +123,8 @@ public: virtual status_t dump(int fd, const Vector<String16>& args); + virtual status_t dumpClient(int fd, const Vector<String16>& args); + /** * Device listener interface */ diff --git a/services/camera/libcameraservice/api_pro/ProCamera2Client.cpp b/services/camera/libcameraservice/api_pro/ProCamera2Client.cpp index 59e5083..6b45c7d 100644 --- a/services/camera/libcameraservice/api_pro/ProCamera2Client.cpp +++ b/services/camera/libcameraservice/api_pro/ProCamera2Client.cpp @@ -331,6 +331,10 @@ status_t ProCamera2Client::getCameraInfo(int cameraId, } status_t ProCamera2Client::dump(int fd, const Vector<String16>& args) { + return BasicClient::dump(fd, args); +} + +status_t ProCamera2Client::dumpClient(int fd, const Vector<String16>& args) { String8 result; result.appendFormat("ProCamera2Client[%d] (%p) PID: %d, dump:\n", mCameraId, diff --git a/services/camera/libcameraservice/api_pro/ProCamera2Client.h b/services/camera/libcameraservice/api_pro/ProCamera2Client.h index 9d83122..fbd869d 100644 --- a/services/camera/libcameraservice/api_pro/ProCamera2Client.h +++ b/services/camera/libcameraservice/api_pro/ProCamera2Client.h @@ -89,6 +89,8 @@ public: virtual status_t dump(int fd, const Vector<String16>& args); + virtual status_t dumpClient(int fd, const Vector<String16>& args); + // Callbacks from camera service virtual void onExclusiveLockStolen(); diff --git a/services/camera/libcameraservice/common/Camera2ClientBase.cpp b/services/camera/libcameraservice/common/Camera2ClientBase.cpp index 453c8bd..24acfbf 100644 --- a/services/camera/libcameraservice/common/Camera2ClientBase.cpp +++ b/services/camera/libcameraservice/common/Camera2ClientBase.cpp @@ -123,7 +123,7 @@ Camera2ClientBase<TClientBase>::~Camera2ClientBase() { } template <typename TClientBase> -status_t Camera2ClientBase<TClientBase>::dump(int fd, +status_t Camera2ClientBase<TClientBase>::dumpClient(int fd, const Vector<String16>& args) { String8 result; result.appendFormat("Camera2ClientBase[%d] (%p) PID: %d, dump:\n", diff --git a/services/camera/libcameraservice/common/Camera2ClientBase.h b/services/camera/libcameraservice/common/Camera2ClientBase.h index e09c1b5..77ae4fc 100644 --- a/services/camera/libcameraservice/common/Camera2ClientBase.h +++ b/services/camera/libcameraservice/common/Camera2ClientBase.h @@ -56,7 +56,7 @@ public: virtual ~Camera2ClientBase(); virtual status_t initialize(camera_module_t *module); - virtual status_t dump(int fd, const Vector<String16>& args); + virtual status_t dumpClient(int fd, const Vector<String16>& args); /** * CameraDeviceBase::NotificationListener implementation |
