From ba9844ee1242243306aaf78cca2a15cb2dd2f083 Mon Sep 17 00:00:00 2001 From: Dave Sparks <> Date: Fri, 27 Mar 2009 12:57:40 -0700 Subject: [PATCH] AI 143127: Media recorder service requires android.permission.CAMERA to record video BUG=1742392 Automated import of CL 143127 --- .../MediaRecorderClient.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/media/libmediaplayerservice/MediaRecorderClient.cpp b/media/libmediaplayerservice/MediaRecorderClient.cpp index 5d1887d898884..e0d29474dc2f8 100644 --- a/media/libmediaplayerservice/MediaRecorderClient.cpp +++ b/media/libmediaplayerservice/MediaRecorderClient.cpp @@ -30,11 +30,24 @@ #include #include #include +#include #include "MediaRecorderClient.h" namespace android { +const char* cameraPermission = "android.permission.CAMERA"; + +static bool checkPermission(const char* permissionString) { +#ifndef HAVE_ANDROID_OS + return true; +#endif + if (getpid() == IPCThreadState::self()->getCallingPid()) return true; + bool ok = checkCallingPermission(String16(permissionString)); + if (!ok) LOGE("Request requires %s", permissionString); + return ok; +} + status_t MediaRecorderClient::setCamera(const sp& camera) { LOGV("setCamera"); @@ -60,6 +73,9 @@ status_t MediaRecorderClient::setPreviewSurface(const sp& surface) status_t MediaRecorderClient::setVideoSource(int vs) { LOGV("setVideoSource(%d)", vs); + if (!checkPermission(cameraPermission)) { + return PERMISSION_DENIED; + } Mutex::Autolock lock(mLock); if (mRecorder == NULL) { LOGE("recorder is not initialized");