- Not real deny, only log in this step.
- Call, Modem, GPS, Network, SAT, SIM, SS, SAP, Phonebook, SMS
Change-Id: I50aa3f01dd200679b65792cfd984d6b9f1bf0c29
# Set required packages
INCLUDE(FindPkgConfig)
-pkg_check_modules(pkgs REQUIRED glib-2.0 gobject-2.0 gio-2.0 gio-unix-2.0 tcore dlog aul appsvc)
+pkg_check_modules(pkgs REQUIRED glib-2.0 gobject-2.0 gio-2.0 gio-unix-2.0 tcore dlog aul appsvc security-server)
FOREACH(flag ${pkgs_CFLAGS})
SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
{
struct treq_call_dial req;
struct custom_data *ctx = user_data;
- UserRequest *ur = MAKE_UR(ctx, call, invocation);
-
+ UserRequest *ur;
TReturn ret = 0;
- if ( !ur ) {
+ if (check_access_control(invocation, AC_CALL, "x") == FALSE)
+ return FALSE;
+
+ ur = MAKE_UR(ctx, call, invocation);
+ if (ur == NULL) {
dbg("[ error ] ur : 0");
return FALSE;
}
{
struct treq_call_answer req;
struct custom_data *ctx = user_data;
- UserRequest *ur = MAKE_UR(ctx, call, invocation);
-
+ UserRequest *ur;
TReturn ret = 0;
- if ( !ur ) {
+ if (check_access_control(invocation, AC_CALL, "x") == FALSE)
+ return FALSE;
+
+ ur = MAKE_UR(ctx, call, invocation);
+ if (ur == NULL) {
dbg("[ error ] ur : 0");
return FALSE;
}
{
struct treq_call_end req;
struct custom_data *ctx = user_data;
- UserRequest *ur = MAKE_UR(ctx, call, invocation);
-
+ UserRequest *ur;
TReturn ret = 0;
- if ( !ur ) {
+ if (check_access_control(invocation, AC_CALL, "x") == FALSE)
+ return FALSE;
+
+ ur = MAKE_UR(ctx, call, invocation);
+ if (ur == NULL) {
dbg("[ error ] ur : 0");
return FALSE;
}
{
struct treq_call_dtmf req;
struct custom_data *ctx = user_data;
- UserRequest *ur = MAKE_UR(ctx, call, invocation);
-
+ UserRequest *ur;
TReturn ret = 0;
- if ( !ur ) {
+ if (check_access_control(invocation, AC_CALL, "x") == FALSE)
+ return FALSE;
+
+ ur = MAKE_UR(ctx, call, invocation);
+ if (ur == NULL) {
dbg("[ error ] ur : 0");
return FALSE;
}
{
struct treq_call_active req;
struct custom_data *ctx = user_data;
- UserRequest *ur = MAKE_UR(ctx, call, invocation);
-
+ UserRequest *ur;
TReturn ret = 0;
- if ( !ur ) {
+ if (check_access_control(invocation, AC_CALL, "x") == FALSE)
+ return FALSE;
+
+ ur = MAKE_UR(ctx, call, invocation);
+ if (ur == NULL) {
dbg("[ error ] ur : 0");
return FALSE;
}
{
struct treq_call_hold req;
struct custom_data *ctx = user_data;
- UserRequest *ur = MAKE_UR(ctx, call, invocation);
-
+ UserRequest *ur;
TReturn ret = 0;
- if ( !ur ) {
+ if (check_access_control(invocation, AC_CALL, "x") == FALSE)
+ return FALSE;
+
+ ur = MAKE_UR(ctx, call, invocation);
+ if (ur == NULL) {
dbg("[ error ] ur : 0");
return FALSE;
}
{
struct treq_call_swap req;
struct custom_data *ctx = user_data;
- UserRequest *ur = MAKE_UR(ctx, call, invocation);
-
+ UserRequest *ur;
TReturn ret = 0;
- if ( !ur ) {
+ if (check_access_control(invocation, AC_CALL, "x") == FALSE)
+ return FALSE;
+
+ ur = MAKE_UR(ctx, call, invocation);
+ if (ur == NULL) {
dbg("[ error ] ur : 0");
return FALSE;
}
{
struct treq_call_join req;
struct custom_data *ctx = user_data;
- UserRequest *ur = MAKE_UR(ctx, call, invocation);
-
+ UserRequest *ur;
TReturn ret = 0;
- if ( !ur ) {
+ if (check_access_control(invocation, AC_CALL, "x") == FALSE)
+ return FALSE;
+
+ ur = MAKE_UR(ctx, call, invocation);
+ if (ur == NULL) {
dbg("[ error ] ur : 0");
return FALSE;
}
{
struct treq_call_split req;
struct custom_data *ctx = user_data;
- UserRequest *ur = MAKE_UR(ctx, call, invocation);
-
+ UserRequest *ur;
TReturn ret = 0;
- if ( !ur ) {
+ if (check_access_control(invocation, AC_CALL, "x") == FALSE)
+ return FALSE;
+
+ ur = MAKE_UR(ctx, call, invocation);
+ if (ur == NULL) {
dbg("[ error ] ur : 0");
return FALSE;
}
{
struct treq_call_transfer req;
struct custom_data *ctx = user_data;
- UserRequest *ur = MAKE_UR(ctx, call, invocation);
-
+ UserRequest *ur;
TReturn ret = 0;
- if ( !ur ) {
+ if (check_access_control(invocation, AC_CALL, "x") == FALSE)
+ return FALSE;
+
+ ur = MAKE_UR(ctx, call, invocation);
+ if (ur == NULL) {
dbg("[ error ] ur : 0");
return FALSE;
}
{
struct treq_call_deflect req;
struct custom_data *ctx = user_data;
- UserRequest *ur = MAKE_UR(ctx, call, invocation);
-
+ UserRequest *ur;
TReturn ret = 0;
- if ( !ur ) {
+ if (check_access_control(invocation, AC_CALL, "x") == FALSE)
+ return FALSE;
+
+ ur = MAKE_UR(ctx, call, invocation);
+ if (ur == NULL) {
dbg("[ error ] ur : 0");
return FALSE;
}
gboolean call_multiparty_state;
char *cp_name = GET_PLUGIN_NAME(invocation);
+ /* OSP access this function already, can't modify this immediately */
+
plugin = tcore_server_find_plugin(ctx->server, cp_name);
if ( !plugin ) {
dbg("[ error ] plugin : 0");
int len, i;
+ /* OSP access this function already, can't modify this immediately */
+
plugin = tcore_server_find_plugin(ctx->server, cp_name);
if ( !plugin ) {
dbg("[ error ] plugin : 0");
{
struct treq_call_sound_set_path req;
struct custom_data *ctx = user_data;
- UserRequest *ur = MAKE_UR(ctx, call, invocation);
-
+ UserRequest *ur;
TReturn ret = 0;
- if ( !ur ) {
+ if (check_access_control(invocation, AC_CALL, "w") == FALSE)
+ return FALSE;
+
+ ur = MAKE_UR(ctx, call, invocation);
+ if (ur == NULL) {
dbg("[ error ] ur : 0");
return FALSE;
}
{
struct treq_call_sound_get_volume_level req;
struct custom_data *ctx = user_data;
- UserRequest *ur = MAKE_UR(ctx, call, invocation);
-
+ UserRequest *ur;
TReturn ret = 0;
- if ( !ur ) {
+ if (check_access_control(invocation, AC_CALL, "r") == FALSE)
+ return FALSE;
+
+ ur = MAKE_UR(ctx, call, invocation);
+ if (ur == NULL) {
dbg("[ error ] ur : 0");
return FALSE;
}
{
struct treq_call_sound_set_volume_level req;
struct custom_data *ctx = user_data;
- UserRequest *ur = MAKE_UR(ctx, call, invocation);
-
+ UserRequest *ur;
TReturn ret = 0;
- if ( !ur ) {
+ if (check_access_control(invocation, AC_CALL, "w") == FALSE)
+ return FALSE;
+
+ ur = MAKE_UR(ctx, call, invocation);
+ if (ur == NULL) {
dbg("[ error ] ur : 0");
return FALSE;
}
static gboolean on_call_get_mute_status(TelephonyCall *call, GDBusMethodInvocation *invocation, gpointer user_data)
{
struct custom_data *ctx = user_data;
- UserRequest *ur = MAKE_UR(ctx, call, invocation);
-
+ UserRequest *ur;
TReturn ret = 0;
- if ( !ur ) {
+ if (check_access_control(invocation, AC_CALL, "r") == FALSE)
+ return FALSE;
+
+ ur = MAKE_UR(ctx, call, invocation);
+ if (ur == NULL) {
dbg("[ error ] ur : 0");
return FALSE;
}
static gboolean on_call_mute(TelephonyCall *call, GDBusMethodInvocation *invocation, gpointer user_data)
{
struct custom_data *ctx = user_data;
- UserRequest *ur = MAKE_UR(ctx, call, invocation);
-
+ UserRequest *ur;
TReturn ret = 0;
- if ( !ur ) {
+ if (check_access_control(invocation, AC_CALL, "x") == FALSE)
+ return FALSE;
+
+ ur = MAKE_UR(ctx, call, invocation);
+ if (ur == NULL) {
dbg("[ error ] ur : 0");
return FALSE;
}
static gboolean on_call_unmute(TelephonyCall *call, GDBusMethodInvocation *invocation, gpointer user_data)
{
struct custom_data *ctx = user_data;
- UserRequest *ur = MAKE_UR(ctx, call, invocation);
-
+ UserRequest *ur;
TReturn ret = 0;
- if ( !ur ) {
+ if (check_access_control(invocation, AC_CALL, "x") == FALSE)
+ return FALSE;
+
+ ur = MAKE_UR(ctx, call, invocation);
+ if (ur == NULL) {
dbg("[ error ] ur : 0");
return FALSE;
}
{
struct custom_data *ctx = user_data;
struct treq_call_sound_set_recording req;
-
- UserRequest *ur = MAKE_UR(ctx, call, invocation);
-
+ UserRequest *ur;
TReturn ret = 0;
- if ( !ur ) {
+ if (check_access_control(invocation, AC_CALL, "w") == FALSE)
+ return FALSE;
+
+ ur = MAKE_UR(ctx, call, invocation);
+ if (ur == NULL) {
dbg("[ error ] ur : 0");
return FALSE;
}
{
struct custom_data *ctx = user_data;
struct treq_call_sound_set_equalization req;
-
- UserRequest *ur = MAKE_UR(ctx, call, invocation);
-
+ UserRequest *ur;
TReturn ret = 0;
- if ( !ur ) {
+ if (check_access_control(invocation, AC_CALL, "w") == FALSE)
+ return FALSE;
+
+ ur = MAKE_UR(ctx, call, invocation);
+ if (ur == NULL) {
dbg("[ error ] ur : 0");
return FALSE;
}
{
struct custom_data *ctx = user_data;
struct treq_call_sound_set_noise_reduction req;
-
- UserRequest *ur = MAKE_UR(ctx, call, invocation);
-
+ UserRequest *ur;
TReturn ret = 0;
- if ( !ur ) {
+ if (check_access_control(invocation, AC_CALL, "w") == FALSE)
+ return FALSE;
+
+ ur = MAKE_UR(ctx, call, invocation);
+ if (ur == NULL) {
dbg("[ error ] ur : 0");
return FALSE;
}
{
struct custom_data *ctx = user_data;
struct treq_call_sound_set_clock_status req;
-
- UserRequest *ur = MAKE_UR(ctx, call, invocation);
-
+ UserRequest *ur;
TReturn ret = 0;
- if ( !ur ) {
+ if (check_access_control(invocation, AC_CALL, "w") == FALSE)
+ return FALSE;
+
+ ur = MAKE_UR(ctx, call, invocation);
+ if (ur == NULL) {
dbg("[ error ] ur : 0");
return FALSE;
}
#include <string.h>
#include <stdlib.h>
#include <glib.h>
+#include <security-server.h>
#include <tcore.h>
#include <plugin.h>
return ur;
}
+
+gboolean check_access_control(GDBusMethodInvocation *invoc, const char *label,
+ const char *perm)
+{
+ GDBusConnection *conn;
+ GVariant *result_pid;
+ GVariant *param;
+ GError *error = NULL;
+ const char *sender;
+ unsigned int pid;
+ int ret;
+ int result = FALSE;
+
+ conn = g_dbus_method_invocation_get_connection(invoc);
+ if (conn == NULL) {
+ err("access control denied(no connection info)");
+ goto OUT;
+ }
+
+ sender = g_dbus_method_invocation_get_sender(invoc);
+ dbg("sender: %s", sender);
+
+ param = g_variant_new("(s)", sender);
+ if (param == NULL) {
+ err("access control denied(sender info fail)");
+ goto OUT;
+ }
+
+ result_pid = g_dbus_connection_call_sync (conn, "org.freedesktop.DBus",
+ "/org/freedesktop/DBus",
+ "org.freedesktop.DBus",
+ "GetConnectionUnixProcessID",
+ param, NULL,
+ G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
+
+ if (error) {
+ err("access control denied (dbus error: %d(%s))",
+ error->code, error->message);
+ g_error_free (error);
+ goto OUT;
+ }
+
+ if (result_pid == NULL) {
+ err("access control denied(fail to get pid)");
+ goto OUT;
+ }
+
+ g_variant_get(result_pid, "(u)", &pid);
+ g_variant_unref(result_pid);
+
+ dbg ("pid = %u", pid);
+
+ ret = security_server_check_privilege_by_pid(pid, label, perm);
+ if (ret != SECURITY_SERVER_API_SUCCESS)
+ err("access control(%s - %s) denied(%d)", label, perm, ret);
+ else
+ result = TRUE;
+
+OUT:
+ /* TODO: return result; */
+ return TRUE;
+}
#define MY_DBUS_PATH "/org/tizen/telephony"
#define MY_DBUS_SERVICE "org.tizen.telephony"
+#define AC_MANAGER "telephony_framework::api_manager"
+#define AC_CALL "telephony_framework::api_call"
+#define AC_GPS "telephony_framework::api_gps"
+#define AC_MODEM "telephony_framework::api_modem"
+#define AC_NETWORK "telephony_framework::api_network"
+#define AC_PHONEBOOK "telephony_framework::api_phonebook"
+#define AC_SAP "telephony_framework::api_sap"
+#define AC_SAT "telephony_framework::api_sat"
+#define AC_SIM "telephony_framework::api_sim"
+#define AC_SMS "telephony_framework::api_sms"
+#define AC_SS "telephony_framework::api_ss"
+
struct custom_data {
TcorePlugin *plugin;
Communicator *comm;
char *dbus_plugin_get_plugin_name_by_object_path(const char *object_path);
UserRequest *dbus_plugin_macro_user_request_new(struct custom_data *ctx, void *object, GDBusMethodInvocation *invocation);
+gboolean check_access_control(GDBusMethodInvocation *invoc, const char *label, const char *perm);
gboolean dbus_plugin_setup_network_interface(TelephonyObjectSkeleton *object, struct custom_data *ctx);
gboolean dbus_plugin_network_response(struct custom_data *ctx, UserRequest *ur, struct dbus_request_info *dbus_info, enum tcore_response_command command, unsigned int data_len, const void *data);
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_GPS, "w") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, gps, invocation);
dbg("data=%d",data);
guchar *decoded_data = NULL;
gsize length;
+ if (check_access_control(invocation, AC_GPS, "w") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, gps, invocation);
decoded_data = g_base64_decode(data, &length);
UserRequest *ur = NULL;
TReturn ret = TCORE_RETURN_SUCCESS;
+ if (check_access_control(invocation, AC_MODEM, "w") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, modem, invocation);
tcore_user_request_set_data(ur, 0, NULL);
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_MODEM, "w") == FALSE)
+ return FALSE;
+
data.enable = enable;
ur = MAKE_UR(ctx, modem, invocation);
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_MODEM, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, modem, invocation);
tcore_user_request_set_data(ur, sizeof(struct treq_modem_get_flightmode), &data);
tcore_user_request_set_command(ur, TREQ_MODEM_GET_FLIGHTMODE);
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_MODEM, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, modem, invocation);
tcore_user_request_set_command(ur, TREQ_MODEM_GET_VERSION);
ret = tcore_communicator_dispatch_request(ctx->comm, ur);
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_MODEM, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, modem, invocation);
tcore_user_request_set_command(ur, TREQ_MODEM_GET_SN);
ret = tcore_communicator_dispatch_request(ctx->comm, ur);
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_MODEM, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, modem, invocation);
tcore_user_request_set_command(ur, TREQ_MODEM_GET_IMEI);
ret = tcore_communicator_dispatch_request(ctx->comm, ur);
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_MODEM, "x") == FALSE)
+ return FALSE;
+
data.signal = arg_signal;
data.status = arg_status;
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_NETWORK, "x") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, network, invocation);
tcore_user_request_set_data(ur, 0, NULL);
tcore_user_request_set_command(ur, TREQ_NETWORK_SEARCH);
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_NETWORK, "x") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, network, invocation);
tcore_user_request_set_data(ur, 0, NULL);
tcore_user_request_set_command(ur, TREQ_NETWORK_SET_CANCEL_MANUAL_SEARCH);
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_NETWORK, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, network, invocation);
tcore_user_request_set_data(ur, 0, NULL);
tcore_user_request_set_command(ur, TREQ_NETWORK_GET_PLMN_SELECTION_MODE);
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_NETWORK, "w") == FALSE)
+ return FALSE;
+
memset(&req, 0, sizeof(struct treq_network_set_plmn_selection_mode));
if (mode == 0) {
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_NETWORK, "w") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, network, invocation);
req.domain = domain;
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_NETWORK, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, network, invocation);
tcore_user_request_set_data(ur, 0, NULL);
tcore_user_request_set_command(ur, TREQ_NETWORK_GET_SERVICE_DOMAIN);
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_NETWORK, "w") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, network, invocation);
req.mode = mode;
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_NETWORK, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, network, invocation);
tcore_user_request_set_data(ur, 0, NULL);
tcore_user_request_set_command(ur, TREQ_NETWORK_GET_BAND);
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_NETWORK, "w") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, network, invocation);
req.mode = mode;
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_NETWORK, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, network, invocation);
tcore_user_request_set_data(ur, 0, NULL);
tcore_user_request_set_command(ur, TREQ_NETWORK_GET_MODE);
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_NETWORK, "w") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, network, invocation);
req.operation = mode;
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_NETWORK, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, network, invocation);
tcore_user_request_set_data(ur, 0, NULL);
tcore_user_request_set_command(ur, TREQ_NETWORK_GET_PREFERRED_PLMN);
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_NETWORK, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, network, invocation);
tcore_user_request_set_data(ur, 0, NULL);
tcore_user_request_set_command(ur, TREQ_NETWORK_GET_SERVING_NETWORK);
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_NETWORK, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, network, invocation);
tcore_user_request_set_data(ur, 0, NULL);
tcore_user_request_set_command(ur, TREQ_NETWORK_GET_NEIGHBORING_CELL_INFO);
TcorePlugin *plugin = NULL;
char *cp_name = GET_PLUGIN_NAME(invocation);
+ if (check_access_control(invocation, AC_PHONEBOOK, "r") == FALSE)
+ return FALSE;
+
dbg("Func Entrance");
plugin = tcore_server_find_plugin(ctx->server, cp_name);
TReturn ret;
struct treq_phonebook_get_count pb_count;
+ if (check_access_control(invocation, AC_PHONEBOOK, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, phonebook, invocation);
memset(&pb_count, 0, sizeof(struct treq_phonebook_get_count));
TReturn ret;
struct treq_phonebook_get_info pb_info;
+ if (check_access_control(invocation, AC_PHONEBOOK, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, phonebook, invocation);
memset(&pb_info, 0, sizeof(struct treq_phonebook_get_info));
struct custom_data *ctx = user_data;
UserRequest *ur = NULL;
TReturn ret;
+
+ if (check_access_control(invocation, AC_PHONEBOOK, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, phonebook, invocation);
tcore_user_request_set_data(ur, 0, NULL);
tcore_user_request_set_command(ur, TREQ_PHONEBOOK_GETUSIMINFO);
TReturn ret;
struct treq_phonebook_read_record pb_read;
+ if (check_access_control(invocation, AC_PHONEBOOK, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, phonebook, invocation);
memset(&pb_read, 0, sizeof(struct treq_phonebook_read_record));
int dest_len = 0;
int temp_len = 0;
+ if (check_access_control(invocation, AC_PHONEBOOK, "r") == FALSE)
+ return FALSE;
+
memset(&pb_update, 0, sizeof(struct treq_phonebook_update_record));
dbg("arg_type[%d]",arg_type);
TReturn ret;
struct treq_phonebook_delete_record pb_delete;
+ if (check_access_control(invocation, AC_PHONEBOOK, "x") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, phonebook, invocation);
memset(&pb_delete, 0, sizeof(struct treq_phonebook_delete_record));
TReturn ret;
struct treq_sap_req_connect req_conn;
+ if (check_access_control(invocation, AC_SAP, "x") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, sap, invocation);
memset(&req_conn, 0, sizeof(struct treq_sap_req_connect));
TReturn ret;
struct treq_sap_req_disconnect req_disconn;
+ if (check_access_control(invocation, AC_SAP, "x") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, sap, invocation);
memset(&req_disconn, 0, sizeof(struct treq_sap_req_disconnect));
TReturn ret;
struct treq_sap_req_status req_status;
+ if (check_access_control(invocation, AC_SAP, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, sap, invocation);
memset(&req_status, 0, sizeof(struct treq_sap_req_status));
TReturn ret;
struct treq_sap_req_atr req_atr;
+ if (check_access_control(invocation, AC_SAP, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, sap, invocation);
memset(&req_atr, 0, sizeof(struct treq_sap_req_atr));
guchar rt_i;
int i =0;
+ if (check_access_control(invocation, AC_SAP, "x") == FALSE)
+ return FALSE;
+
dbg("Func Entrance");
memset(&t_apdu, 0, sizeof(struct treq_sap_transfer_apdu));
TReturn ret;
struct treq_sap_set_protocol set_protocol;
+ if (check_access_control(invocation, AC_SAP, "w") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, sap, invocation);
memset(&set_protocol, 0, sizeof(struct treq_sap_set_protocol));
TReturn ret;
struct treq_sap_set_power set_power;
+ if (check_access_control(invocation, AC_SAP, "w") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, sap, invocation);
memset(&set_power, 0, sizeof(struct treq_sap_set_power));
TReturn ret;
struct treq_sap_req_cardreaderstatus req_reader;
+ if (check_access_control(invocation, AC_SAP, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, sap, invocation);
memset(&req_reader, 0, sizeof(struct treq_sap_req_cardreaderstatus));
gboolean b_present, b_help_info, b_updated;
GVariant *items;
+ if (check_access_control(invocation, AC_SAT, "r") == FALSE)
+ return FALSE;
if(!ctx->cached_sat_main_menu){
dbg("no main menu");
gboolean result = FALSE;
gint out_param = 1;
+ if (check_access_control(invocation, AC_SAT, "x") == FALSE)
+ return FALSE;
+
plugin_name = GET_PLUGIN_NAME(invocation);
plg = tcore_server_find_plugin(ctx->server, plugin_name);
if (!plg){
gint out_param = 1;
GVariant *confirm_data = NULL;
+ if (check_access_control(invocation, AC_SAT, "x") == FALSE)
+ return FALSE;
+
plugin_name = GET_PLUGIN_NAME(invocation);
plg = tcore_server_find_plugin(ctx->server, plugin_name);
if (!plg){
gboolean result = FALSE;
gint out_param = 1;
+ if (check_access_control(invocation, AC_SAT, "x") == FALSE)
+ return FALSE;
+
plugin_name = GET_PLUGIN_NAME(invocation);
plg = tcore_server_find_plugin(ctx->server, plugin_name);
if (!plg){
struct treq_sat_envelop_cmd_data envelop_data;
+ if (check_access_control(invocation, AC_SAT, "x") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, sat, invocation);
memset(&envelop_data, 0, sizeof(struct treq_sat_envelop_cmd_data));
envelop_data.sub_cmd = ENVELOP_MENU_SELECTION;
TReturn rv;
struct custom_data *ctx = user_data;
UserRequest *ur = NULL;
-
struct treq_sat_envelop_cmd_data envelop_data;
+ if (check_access_control(invocation, AC_SAT, "x") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, sat, invocation);
memset(&envelop_data, 0, sizeof(struct treq_sat_envelop_cmd_data));
envelop_data.sub_cmd = ENVELOP_EVENT_DOWNLOAD;
TcorePlugin *plugin = NULL;
char *cp_name = GET_PLUGIN_NAME(invocation);
+ if (check_access_control(invocation, AC_SIM, "r") == FALSE)
+ return FALSE;
+
dbg("Func Entrance");
plugin = tcore_server_find_plugin(ctx->server, cp_name);
co_sim = tcore_plugin_ref_core_object(plugin, CORE_OBJECT_TYPE_SIM);
GVariantBuilder b;
int i;
+ if (check_access_control(invocation, AC_SIM, "r") == FALSE)
+ return FALSE;
+
dbg("Func Entrance");
g_variant_builder_init(&b, G_VARIANT_TYPE("aa{sv}"));
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_SIM, "r") == FALSE)
+ return FALSE;
+
dbg("Func Entrance");
ur = MAKE_UR(ctx, sim, invocation);
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_SIM, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, sim, invocation);
tcore_user_request_set_command(ur, TREQ_SIM_GET_LANGUAGE);
struct custom_data *ctx = user_data;
UserRequest *ur = NULL;
TReturn ret;
-
struct treq_sim_set_language set_language;
+
+ if (check_access_control(invocation, AC_SIM, "w") == FALSE)
+ return FALSE;
+
memset(&set_language, 0, sizeof(struct treq_sim_set_language));
set_language.language = arg_language;
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_SIM, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, sim, invocation);
tcore_user_request_set_command(ur, TREQ_SIM_GET_CALLFORWARDING);
UserRequest *ur = NULL;
TReturn ret;
struct treq_sim_set_callforwarding req_cf;
+
+ if (check_access_control(invocation, AC_SIM, "w") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, sim, invocation);
memset(&req_cf, 0, sizeof(struct treq_sim_set_callforwarding));
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_SIM, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, sim, invocation);
tcore_user_request_set_command(ur, TREQ_SIM_GET_MESSAGEWAITING);
UserRequest *ur = NULL;
TReturn ret;
struct treq_sim_set_messagewaiting req_mw;
+
+ if (check_access_control(invocation, AC_SIM, "w") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, sim, invocation);
memset(&req_mw, 0, sizeof(struct treq_sim_set_messagewaiting));
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_SIM, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, sim, invocation);
tcore_user_request_set_command(ur, TREQ_SIM_GET_MAILBOX);
UserRequest *ur = NULL;
TReturn ret;
struct treq_sim_set_mailbox req_mb;
+
+ if (check_access_control(invocation, AC_SIM, "w") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, sim, invocation);
memset(&req_mb, 0, sizeof(struct treq_sim_set_mailbox));
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_SIM, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, sim, invocation);
tcore_user_request_set_command(ur, TREQ_SIM_GET_CPHS_INFO);
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_SIM, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, sim, invocation);
tcore_user_request_set_command(ur, TREQ_SIM_GET_MSISDN);
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_SIM, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, sim, invocation);
tcore_user_request_set_command(ur, TREQ_SIM_GET_OPLMNWACT);
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_SIM, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, sim, invocation);
tcore_user_request_set_command(ur, TREQ_SIM_GET_SPN);
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_SIM, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, sim, invocation);
tcore_user_request_set_command(ur, TREQ_SIM_GET_CPHS_NETNAME);
guchar rt_i;
int i =0;
TReturn ret;
-
struct treq_sim_req_authentication req_auth;
+
+ if (check_access_control(invocation, AC_SIM, "x") == FALSE)
+ return FALSE;
+
memset(&req_auth, 0, sizeof(struct treq_sim_req_authentication));
req_auth.auth_type = arg_type;
struct custom_data *ctx = user_data;
UserRequest *ur = NULL;
TReturn ret;
-
struct treq_sim_verify_pins verify_pins;
+
+ if (check_access_control(invocation, AC_SIM, "x") == FALSE)
+ return FALSE;
+
memset(&verify_pins, 0, sizeof(struct treq_sim_verify_pins));
verify_pins.pin_type = arg_type;
struct custom_data *ctx = user_data;
UserRequest *ur = NULL;
TReturn ret;
-
struct treq_sim_verify_puks verify_puks;
+
+ if (check_access_control(invocation, AC_SIM, "x") == FALSE)
+ return FALSE;
+
memset(&verify_puks, 0, sizeof(struct treq_sim_verify_puks));
verify_puks.puk_type = arg_type;
struct custom_data *ctx = user_data;
UserRequest *ur = NULL;
TReturn ret;
-
struct treq_sim_change_pins change_pins;
+
+ if (check_access_control(invocation, AC_SIM, "x") == FALSE)
+ return FALSE;
+
memset(&change_pins, 0, sizeof(struct treq_sim_change_pins));
change_pins.type = arg_type;
struct custom_data *ctx = user_data;
UserRequest *ur = NULL;
TReturn ret;
-
struct treq_sim_disable_facility dis_facility;
+
+ if (check_access_control(invocation, AC_SIM, "x") == FALSE)
+ return FALSE;
+
memset(&dis_facility, 0, sizeof(struct treq_sim_disable_facility));
dbg("arg_type[%d]", arg_type);
struct custom_data *ctx = user_data;
UserRequest *ur = NULL;
TReturn ret;
-
struct treq_sim_enable_facility en_facility;
+
+ if (check_access_control(invocation, AC_SIM, "x") == FALSE)
+ return FALSE;
+
memset(&en_facility, 0, sizeof(struct treq_sim_enable_facility));
dbg("arg_type[%d]", arg_type);
struct custom_data *ctx = user_data;
UserRequest *ur = NULL;
TReturn ret;
-
struct treq_sim_get_facility_status facility;
+
+ if (check_access_control(invocation, AC_SIM, "r") == FALSE)
+ return FALSE;
+
memset(&facility, 0, sizeof(struct treq_sim_get_facility_status));
dbg("arg_type[%d]", arg_type);
struct custom_data *ctx = user_data;
UserRequest *ur = NULL;
TReturn ret;
-
struct treq_sim_get_lock_info lock_info;
+
+ if (check_access_control(invocation, AC_SIM, "r") == FALSE)
+ return FALSE;
+
memset(&lock_info, 0, sizeof(struct treq_sim_get_lock_info));
dbg("arg_type[%d]", arg_type);
struct custom_data *ctx = user_data;
UserRequest *ur = NULL;
struct treq_sim_transmit_apdu send_apdu;
-
GVariantIter *iter = NULL;
GVariant *inner_gv = NULL;
guchar rt_i;
int i =0;
TReturn ret;
+ if (check_access_control(invocation, AC_SIM, "x") == FALSE)
+ return FALSE;
+
dbg("Func Entrance");
memset(&send_apdu, 0, sizeof(struct treq_sim_transmit_apdu));
UserRequest *ur = NULL;
TReturn ret;
+ if (check_access_control(invocation, AC_SIM, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, sim, invocation);
tcore_user_request_set_command(ur, TREQ_SIM_GET_ATR);
guchar *decoded_sca = NULL;
guchar *decoded_tpdu = NULL;
+ if (check_access_control(invocation, AC_SMS, "x") == FALSE)
+ return FALSE;
+
memset(&sendUmtsMsg, 0 , sizeof(struct treq_sms_send_umts_msg));
decoded_sca = g_base64_decode(sca, &length);
struct custom_data *ctx = user_data;
UserRequest *ur = NULL;
+ if (check_access_control(invocation, AC_SMS, "r") == FALSE)
+ return FALSE;
+
readMsg.index = arg_index;
ur = MAKE_UR(ctx, sms, invocation);
guchar *decoded_sca = NULL;
guchar *decoded_tpdu = NULL;
+ if (check_access_control(invocation, AC_SMS, "w") == FALSE)
+ return FALSE;
+
saveMsg.simIndex = 0xffff;
saveMsg.msgStatus = arg_msg_status;
struct custom_data *ctx = user_data;
UserRequest *ur = NULL;
+ if (check_access_control(invocation, AC_SMS, "x") == FALSE)
+ return FALSE;
+
deleteMsg.index = arg_index;
ur = MAKE_UR(ctx, sms, invocation);
struct custom_data *ctx = user_data;
UserRequest *ur = NULL;
+ if (check_access_control(invocation, AC_SMS, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, sms, invocation);
tcore_user_request_set_data(ur, sizeof(struct treq_sms_get_msg_count), &getMsgCnt);
tcore_user_request_set_command(ur, TREQ_SMS_GET_COUNT);
struct custom_data *ctx = user_data;
UserRequest *ur = NULL;
+ if (check_access_control(invocation, AC_SMS, "r") == FALSE)
+ return FALSE;
+
getSca.index = arg_index;
ur = MAKE_UR(ctx, sms, invocation);
struct custom_data *ctx = user_data;
UserRequest *ur = NULL;
+ if (check_access_control(invocation, AC_SMS, "w") == FALSE)
+ return FALSE;
+
memset(&setSca, 0, sizeof(struct treq_sms_set_sca));
setSca.index = arg_index;
struct custom_data *ctx = user_data;
UserRequest *ur = NULL;
+ if (check_access_control(invocation, AC_SMS, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, sms, invocation);
tcore_user_request_set_data(ur, sizeof(struct treq_sms_get_cb_config), &getCbConfig);
tcore_user_request_set_command(ur, TREQ_SMS_GET_CB_CONFIG);
gsize length;
guchar *decoded_msgId = NULL;
+ if (check_access_control(invocation, AC_SMS, "w") == FALSE)
+ return FALSE;
+
setCbConfig.net3gppType = arg_net3gppType;
setCbConfig.cbEnabled = arg_cbEnable;
setCbConfig.msgIdMaxCount = arg_msgIdMaxCount;
struct custom_data *ctx = user_data;
UserRequest *ur = NULL;
+ if (check_access_control(invocation, AC_SMS, "w") == FALSE)
+ return FALSE;
+
memStatus.memory_status = arg_memoryStatus;
ur = MAKE_UR(ctx, sms, invocation);
struct custom_data *ctx = user_data;
UserRequest *ur = NULL;
+ if (check_access_control(invocation, AC_SMS, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, sms, invocation);
tcore_user_request_set_data(ur, sizeof(struct treq_sms_get_pref_bearer), &getPrefBearer);
tcore_user_request_set_command(ur, TREQ_SMS_GET_PREF_BEARER);
struct custom_data *ctx = user_data;
UserRequest *ur = NULL;
+ if (check_access_control(invocation, AC_SMS, "w") == FALSE)
+ return FALSE;
+
setPrefBearer.svc = arg_bearerType;
ur = MAKE_UR(ctx, sms, invocation);
guchar *decoded_sca = NULL;
guchar *decoded_tpdu = NULL;
+ if (check_access_control(invocation, AC_SMS, "w") == FALSE)
+ return FALSE;
+
memset(&deliveryReport, 0, sizeof(struct treq_sms_set_delivery_report));
decoded_sca = g_base64_decode(arg_sca, &length);
struct custom_data *ctx = user_data;
UserRequest *ur = NULL;
+ if (check_access_control(invocation, AC_SMS, "w") == FALSE)
+ return FALSE;
+
msgStatus.index = arg_index;
msgStatus.msgStatus = arg_msgStatus;
struct custom_data *ctx = user_data;
UserRequest *ur = NULL;
+ if (check_access_control(invocation, AC_SMS, "r") == FALSE)
+ return FALSE;
+
getParams.index = arg_index;
ur = MAKE_UR(ctx, sms, invocation);
guchar *decoded_destDialNum = NULL;
guchar *decoded_scaDialNum = NULL;
+ if (check_access_control(invocation, AC_SMS, "w") == FALSE)
+ return FALSE;
+
memset(&setParams, 0, sizeof(struct treq_sms_set_params));
setParams.params.recordIndex = arg_recordIndex;
struct custom_data *ctx = user_data;
UserRequest *ur = NULL;
+ if (check_access_control(invocation, AC_SMS, "r") == FALSE)
+ return FALSE;
+
ur = MAKE_UR(ctx, sms, invocation);
tcore_user_request_set_data(ur, sizeof(struct treq_sms_get_paramcnt), &getParamCnt);
tcore_user_request_set_command(ur, TREQ_SMS_GET_PARAMCNT);
UserRequest *ur = NULL;
int ret = 0;
+ if (check_access_control(invocation, AC_SS, "w") == FALSE) {
+ GVariant *result = 0;
+ GVariantBuilder b;
+
+ g_variant_builder_init(&b, G_VARIANT_TYPE("aa{sv}"));
+ result = g_variant_builder_end(&b);
+
+ telephony_ss_complete_register_forwarding(ss, invocation,
+ result, ret);
+
+ g_variant_unref(result);
+ return TRUE;
+ }
+
memset(&req, 0, sizeof(struct treq_ss_forwarding));
req.class = ss_class;
UserRequest *ur = NULL;
int ret = 0;
+ if (check_access_control(invocation, AC_SS, "w") == FALSE) {
+ GVariant *result = 0;
+ GVariantBuilder b;
+
+ g_variant_builder_init(&b, G_VARIANT_TYPE("aa{sv}"));
+ result = g_variant_builder_end(&b);
+
+ telephony_ss_complete_register_forwarding(ss, invocation,
+ result, ret);
+
+ dbg("[error]tcore_communicator_dispatch_request() : (0x%x)",
+ ret);
+
+ g_variant_unref(result);
+ return TRUE;
+ }
+
memset(&req, 0, sizeof(struct treq_ss_forwarding));
req.class = ss_class;
UserRequest *ur = NULL;
int ret = 0;
+ if (check_access_control(invocation, AC_SS, "w") == FALSE) {
+ GVariant *result = 0;
+ GVariantBuilder b;
+
+ g_variant_builder_init(&b, G_VARIANT_TYPE("aa{sv}"));
+ result = g_variant_builder_end(&b);
+
+ telephony_ss_complete_register_forwarding(ss, invocation,
+ result, ret);
+
+ dbg("[error]tcore_communicator_dispatch_request() : (0x%x)",
+ ret);
+
+ g_variant_unref(result);
+ return TRUE;
+ }
+
memset(&req, 0, sizeof(struct treq_ss_forwarding));
req.class = ss_class;
UserRequest *ur = NULL;
int ret = 0;
+ if (check_access_control(invocation, AC_SS, "w") == FALSE) {
+ GVariant *result = 0;
+ GVariantBuilder b;
+
+ g_variant_builder_init(&b, G_VARIANT_TYPE("aa{sv}"));
+ result = g_variant_builder_end(&b);
+
+ telephony_ss_complete_register_forwarding(ss, invocation,
+ result, ret);
+
+ dbg("[error]tcore_communicator_dispatch_request() : (0x%x)",
+ ret);
+
+ g_variant_unref(result);
+ return TRUE;
+ }
+
memset(&req, 0, sizeof(struct treq_ss_forwarding));
req.class = ss_class;
UserRequest *ur = NULL;
int ret = 0;
+ if (check_access_control(invocation, AC_SS, "w") == FALSE) {
+ GVariant *result = 0;
+ GVariantBuilder b;
+
+ g_variant_builder_init(&b, G_VARIANT_TYPE("aa{sv}"));
+ result = g_variant_builder_end(&b);
+
+ telephony_ss_complete_register_forwarding(ss, invocation,
+ result, ret);
+
+ dbg("[error]tcore_communicator_dispatch_request() : (0x%x)",
+ ret);
+
+ g_variant_unref(result);
+ return TRUE;
+ }
+
memset(&req, 0, sizeof(struct treq_ss_forwarding));
req.class = ss_class;
<manifest>
<request>
- <domain name="telephony_framework"/>
- </request>
- <assign>
- <filesystem path="/usr/lib/telephony/plugins/dbus-tapi-plugin.so" label="telephony_framework"/>
- </assign>
- <request>
- <domain name="telephony_framework"/>
+ <domain name="_"/>
</request>
</manifest>