bool legacy_camera_wait(camera_h camera, unsigned int timeout);
void legacy_camera_lock(camera_h camera, bool is_lock);
void legacy_camera_send_signal(camera_h camera);
+int legacy_camera_get_platform_privilege(camera_h camera, const char **platform_privilege);
/**
return __convert_camera_error_code(__func__, ret);
}
+
+
+int legacy_camera_get_platform_privilege(camera_h camera, const char **platform_privilege)
+{
+ int ret = MM_ERROR_NONE;
+ int size = 0;
+ camera_s *handle = (camera_s *)camera;
+
+ camera_return_val_if_fail(handle, CAMERA_ERROR_INVALID_PARAMETER);
+ camera_return_val_if_fail(platform_privilege, CAMERA_ERROR_INVALID_PARAMETER);
+
+ ret = mm_camcorder_get_attributes(handle->mm_handle, NULL,
+ MMCAM_PLATFORM_PRIVILEGE_CAMERA, platform_privilege, &size,
+ NULL);
+
+ if (ret == MM_ERROR_NONE)
+ LOGD("platform privilege [%s]", *platform_privilege);
+
+ return __convert_camera_error_code(__func__, ret);
+}
goto _CREATE_ERROR;
}
+ /* get platform privilege name */
+ if (legacy_camera_get_platform_privilege(muse_camera->camera_handle,
+ &muse_camera->platform_privilege) != CAMERA_ERROR_NONE)
+ LOGE("failed to get platform privilege");
+
muse_camera->task_run = true;
muse_camera->task_thread = g_thread_try_new("camera_task_thread",
_camera_dispatcher_task_func, (gpointer)muse_camera, NULL);
return MUSE_CAMERA_ERROR_INVALID;
}
+ /* public privilege for camera */
if (!muse_server_security_check_cynara(client_fd, CAMERA_PRIVILEGE_NAME)) {
ret = CAMERA_ERROR_PERMISSION_DENIED;
- LOGE("security check failed 0x%x", ret);
+ LOGE("privilege[%s] failed 0x%x", CAMERA_PRIVILEGE_NAME, ret);
+ muse_camera_msg_return(api, class, ret, module);
+ return MUSE_CAMERA_ERROR_INVALID;
+ }
+
+ /* platform privilege for camera */
+ if (muse_camera->platform_privilege &&
+ !muse_server_security_check_cynara(client_fd, muse_camera->platform_privilege)) {
+ ret = CAMERA_ERROR_PERMISSION_DENIED;
+ LOGE("privilege[%s] failed 0x%x", muse_camera->platform_privilege, ret);
muse_camera_msg_return(api, class, ret, module);
return MUSE_CAMERA_ERROR_INVALID;
}