Support platform privilege for camera device 79/243379/1 accepted/tizen/unified/20200909.155606 submit/tizen/20200908.053247
authorJeongmo Yang <jm80.yang@samsung.com>
Mon, 7 Sep 2020 07:10:07 +0000 (16:10 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Mon, 7 Sep 2020 07:10:07 +0000 (16:10 +0900)
[Version] 0.3.23
[Issue Type] New feature

Change-Id: I48404243122f6566562e1f96750507283312c02a
Signed-off-by: Jeongmo Yang <jm80.yang@samsung.com>
muse/src/muse_recorder_dispatcher.c
packaging/mmsvc-recorder.spec

index 1853533..731c0b1 100644 (file)
@@ -98,6 +98,7 @@ typedef struct {
        muse_camera_data_list camera_data;
        bool video_encode_decision;
        muse_recorder_type_e type;
+       muse_camera_handle_s *muse_camera;
 } muse_recorder_handle_s;
 
 
@@ -658,7 +659,6 @@ int recorder_dispatcher_create(muse_module_h module)
        muse_recorder_api_class_e class = MUSE_RECORDER_API_CLASS_IMMEDIATE;
        intptr_t camera_handle = 0;
        muse_recorder_handle_s *muse_recorder = NULL;
-       muse_camera_handle_s *muse_camera = NULL;
        intptr_t handle = 0;
 
        muse_recorder_msg_get(recorder_type, muse_server_module_get_msg(module));
@@ -689,11 +689,12 @@ int recorder_dispatcher_create(muse_module_h module)
                        goto _CREATE_ERROR;
                }
 
-               muse_camera = (muse_camera_handle_s *)camera_handle;
+               muse_recorder->muse_camera = (muse_camera_handle_s *)camera_handle;
 
-               LOGD("video type, camera handle : %p", muse_camera->camera_handle);
+               ret = legacy_recorder_create_videorecorder(muse_recorder->muse_camera->camera_handle,
+                       &muse_recorder->recorder_handle);
 
-               ret = legacy_recorder_create_videorecorder(muse_camera->camera_handle, &muse_recorder->recorder_handle);
+               LOGD("video type, camera handle : %p", muse_recorder->muse_camera->camera_handle);
        } else if (recorder_type == MUSE_RECORDER_TYPE_AUDIO) {
                muse_recorder_msg_get(pid, muse_server_module_get_msg(module));
 
@@ -840,9 +841,19 @@ int recorder_dispatcher_prepare(muse_module_h module)
                        return MUSE_RECORDER_ERROR_INVALID;
                }
 
+               /* public privilege for camera */
                if (!muse_server_security_check_cynara(client_fd, CAMERA_PRIVILEGE_NAME)) {
-                       LOGE("security(camera) check failed");
                        ret = RECORDER_ERROR_PERMISSION_DENIED;
+                       LOGE("privilege[%s] failed 0x%x", CAMERA_PRIVILEGE_NAME, ret);
+                       muse_recorder_msg_return(api, class, ret, module);
+                       return MUSE_RECORDER_ERROR_INVALID;
+               }
+
+               /* platform privilege for camera */
+               if (muse_recorder->muse_camera && muse_recorder->muse_camera->platform_privilege &&
+                       !muse_server_security_check_cynara(client_fd, muse_recorder->muse_camera->platform_privilege)) {
+                       ret = RECORDER_ERROR_PERMISSION_DENIED;
+                       LOGE("privilege[%s] failed 0x%x", muse_recorder->muse_camera->platform_privilege, ret);
                        muse_recorder_msg_return(api, class, ret, module);
                        return MUSE_RECORDER_ERROR_INVALID;
                }
index ac79538..3c95525 100644 (file)
@@ -1,6 +1,6 @@
 Name:       mmsvc-recorder
 Summary:    A Recorder module for muse server
-Version:    0.3.22
+Version:    0.3.23
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0