Add security access control for API tizen_2.1 accepted/tizen/20130520.101326 submit/tizen/20130517.045252 submit/tizen_2.1/20130514.055045
authorwootak.jung <wootak.jung@samsung.com>
Fri, 3 May 2013 04:07:40 +0000 (13:07 +0900)
committerwootak.jung <wootak.jung@samsung.com>
Fri, 10 May 2013 14:37:12 +0000 (23:37 +0900)
- Not real deny, only log in this step.
- Call, Modem, GPS, Network, SAT, SIM, SS, SAP, Phonebook, SMS

Change-Id: I50aa3f01dd200679b65792cfd984d6b9f1bf0c29

14 files changed:
CMakeLists.txt
src/call.c
src/common.c
src/common.h
src/gps.c
src/modem.c
src/network.c
src/phonebook.c
src/sap.c
src/sat.c
src/sim.c
src/sms.c
src/ss.c
tel-plugin-dbus_tapi.manifest

index 9e3544376c7a548f97ba3cb164c0560c5e38431c..8d7e32928afb5ccafb52de93ce9ed27afc531687 100644 (file)
@@ -11,7 +11,7 @@ SET(CMAKE_INSTALL_PREFIX "${PREFIX}")
 
 # 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}")
index 8864b2caf905dbd3a3d06de17489a71aca59dc31..9bb54e93ebe2a8e9f2b8a72d6060c35068048201 100644 (file)
@@ -134,11 +134,14 @@ static gboolean on_call_dial(TelephonyCall *call, GDBusMethodInvocation *invocat
 {
        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;
        }
@@ -166,11 +169,14 @@ static gboolean on_call_answer(TelephonyCall *call, GDBusMethodInvocation *invoc
 {
        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;
        }
@@ -196,11 +202,14 @@ static gboolean on_call_end(TelephonyCall *call, GDBusMethodInvocation *invocati
 {
        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;
        }
@@ -226,11 +235,14 @@ static gboolean on_call_dtmf(TelephonyCall *call, GDBusMethodInvocation *invocat
 {
        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;
        }
@@ -256,11 +268,14 @@ static gboolean on_call_active(TelephonyCall *call, GDBusMethodInvocation *invoc
 {
        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;
        }
@@ -285,11 +300,14 @@ static gboolean on_call_hold(TelephonyCall *call, GDBusMethodInvocation *invocat
 {
        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;
        }
@@ -314,11 +332,14 @@ static gboolean on_call_swap(TelephonyCall *call, GDBusMethodInvocation *invocat
 {
        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;
        }
@@ -343,11 +364,14 @@ static gboolean on_call_join(TelephonyCall *call, GDBusMethodInvocation *invocat
 {
        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;
        }
@@ -372,11 +396,14 @@ static gboolean on_call_split(TelephonyCall *call, GDBusMethodInvocation *invoca
 {
        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;
        }
@@ -401,11 +428,14 @@ static gboolean on_call_transfer(TelephonyCall *call, GDBusMethodInvocation *inv
 {
        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;
        }
@@ -430,11 +460,14 @@ static gboolean on_call_deflect(TelephonyCall *call, GDBusMethodInvocation *invo
 {
        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;
        }
@@ -470,6 +503,8 @@ static gboolean on_call_get_status(TelephonyCall *call, GDBusMethodInvocation *i
        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");
@@ -530,6 +565,8 @@ static gboolean on_call_get_status_all(TelephonyCall *call, GDBusMethodInvocatio
 
        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");
@@ -611,11 +648,14 @@ static gboolean on_call_set_sound_path(TelephonyCall *call, GDBusMethodInvocatio
 {
        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;
        }
@@ -641,11 +681,14 @@ static gboolean on_call_get_volume(TelephonyCall *call, GDBusMethodInvocation *i
 {
        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;
        }
@@ -684,11 +727,14 @@ static gboolean on_call_set_volume(TelephonyCall *call, GDBusMethodInvocation *i
 {
        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;
        }
@@ -714,11 +760,14 @@ static gboolean on_call_set_volume(TelephonyCall *call, GDBusMethodInvocation *i
 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;
        }
@@ -739,11 +788,14 @@ static gboolean on_call_get_mute_status(TelephonyCall *call, GDBusMethodInvocati
 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;
        }
@@ -764,11 +816,14 @@ static gboolean on_call_mute(TelephonyCall *call, GDBusMethodInvocation *invocat
 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;
        }
@@ -790,12 +845,14 @@ static gboolean on_call_set_sound_recording(TelephonyCall *call, GDBusMethodInvo
 {
        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;
        }
@@ -820,12 +877,14 @@ static gboolean on_call_set_sound_equalization(TelephonyCall *call, GDBusMethodI
 {
        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;
        }
@@ -852,12 +911,14 @@ static gboolean on_call_set_sound_noise_reduction(TelephonyCall *call, GDBusMeth
 {
        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;
        }
@@ -882,12 +943,14 @@ static gboolean on_call_set_sound_clock_status(TelephonyCall *call, GDBusMethodI
 {
        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;
        }
index 485d6a43651ca17c7b160bcc161d016c6f2be92d..a9d6ba9341bbe4087ea4da2cf4f3ddd1f43a4c5b 100644 (file)
@@ -22,6 +22,7 @@
 #include <string.h>
 #include <stdlib.h>
 #include <glib.h>
+#include <security-server.h>
 
 #include <tcore.h>
 #include <plugin.h>
@@ -80,3 +81,65 @@ UserRequest *dbus_plugin_macro_user_request_new(struct custom_data *ctx, void *o
 
        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;
+}
index 5339af17e1ec6058e4ac0cbeec22429acfee8856..f1acbfc021d997e3cc5dd447f013be9e65f63a30 100644 (file)
 #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;
@@ -57,6 +69,7 @@ struct dbus_request_info {
 
 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);
index 59bbbccc82b32f35821cea16a488cd0ee6247910..86e5eff4e9b6887130b2788d54927b30a146b191 100644 (file)
--- a/src/gps.c
+++ b/src/gps.c
@@ -51,6 +51,9 @@ on_gps_set_frequency_aiding (TelephonyGps *gps,
        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);
 
@@ -78,6 +81,9 @@ on_gps_confirm_measure_pos (TelephonyGps *gps,
        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);
index 576050cc9f435c4bde3b34b30d3e96d798770fe8..dad67dca5d7235635a196c8a1a5f7e0e49a40cd5 100644 (file)
@@ -51,6 +51,9 @@ on_modem_set_power (TelephonyModem *modem,
        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);
 
@@ -94,6 +97,9 @@ on_modem_set_flight_mode (TelephonyModem *modem,
        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);
@@ -118,6 +124,9 @@ on_modem_get_flight_mode (TelephonyModem *modem,
        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);
@@ -139,6 +148,9 @@ on_modem_get_version (TelephonyModem *modem,
        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);
@@ -161,6 +173,9 @@ on_modem_get_serial_number (TelephonyModem *modem,
        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);
@@ -181,6 +196,9 @@ on_modem_get_imei (TelephonyModem *modem,
        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);
@@ -200,6 +218,9 @@ static gboolean on_modem_set_dun_pin_ctrl (TelephonyModem *modem, GDBusMethodInv
        UserRequest *ur = NULL;
        TReturn ret;
 
+       if (check_access_control(invocation, AC_MODEM, "x") == FALSE)
+               return FALSE;
+
        data.signal = arg_signal;
        data.status = arg_status;
 
index fc164510676d89c1ef727e8399c34d56bc1e1902..298146ddcc7450ca6e426cf64551e1f264825758 100755 (executable)
@@ -227,6 +227,9 @@ on_network_search (TelephonyNetwork *network,
        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);
@@ -248,6 +251,9 @@ on_network_search_cancel (TelephonyNetwork *network,
        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);
@@ -269,6 +275,9 @@ on_network_get_selection_mode (TelephonyNetwork *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_PLMN_SELECTION_MODE);
@@ -294,6 +303,9 @@ on_network_set_selection_mode (TelephonyNetwork *network,
        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) {
@@ -341,6 +353,9 @@ on_network_set_service_domain (TelephonyNetwork *network,
        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;
@@ -365,6 +380,9 @@ on_network_get_service_domain (TelephonyNetwork *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_SERVICE_DOMAIN);
@@ -389,6 +407,9 @@ on_network_set_band (TelephonyNetwork *network,
        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;
@@ -414,6 +435,9 @@ on_network_get_band (TelephonyNetwork *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_BAND);
@@ -437,6 +461,9 @@ on_network_set_mode (TelephonyNetwork *network,
        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;
@@ -461,6 +488,9 @@ on_network_get_mode (TelephonyNetwork *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_MODE);
@@ -487,6 +517,9 @@ on_network_set_preferred_plmn (TelephonyNetwork *network,
        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;
@@ -519,6 +552,9 @@ on_network_get_preferred_plmn (TelephonyNetwork *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_PREFERRED_PLMN);
@@ -540,6 +576,9 @@ on_network_get_serving_network (TelephonyNetwork *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_SERVING_NETWORK);
@@ -561,6 +600,9 @@ on_network_get_neighboring_cell_info (TelephonyNetwork *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);
index 2c64354d2a39c3fc441009c2e01134cff7dfb533..9b21f10babc0a7c82e4f41396b2abc632f684e13 100644 (file)
@@ -62,6 +62,9 @@ static gboolean on_phonebook_get_init_status(TelephonyPhonebook *phonebook, GDBu
        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);
@@ -102,6 +105,9 @@ static gboolean on_phonebook_get_count(TelephonyPhonebook *phonebook, GDBusMetho
        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));
 
@@ -124,6 +130,9 @@ static gboolean on_phonebook_get_info(TelephonyPhonebook *phonebook, GDBusMethod
        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));
 
@@ -145,6 +154,10 @@ static gboolean on_phonebook_get_usim_info(TelephonyPhonebook *phonebook, GDBusM
        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);
@@ -169,6 +182,9 @@ static gboolean on_phonebook_read_record(TelephonyPhonebook *phonebook, GDBusMet
        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));
 
@@ -205,6 +221,9 @@ static gboolean on_phonebook_update_record(TelephonyPhonebook *phonebook, GDBusM
        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);
@@ -451,6 +470,9 @@ static gboolean on_phonebook_delete_record(TelephonyPhonebook *phonebook, GDBusM
        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));
 
index c7328964a2457c3fb2aca904874291f42347b93b..2b1ef5214a1213d378a41c823039bbfd8032133d 100644 (file)
--- a/src/sap.c
+++ b/src/sap.c
@@ -47,6 +47,9 @@ static gboolean on_sap_connect(TelephonySap *sap, GDBusMethodInvocation *invocat
        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));
 
@@ -70,6 +73,9 @@ static gboolean on_sap_disconnect(TelephonySap *sap, GDBusMethodInvocation *invo
        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));
 
@@ -91,6 +97,9 @@ static gboolean on_sap_get_status(TelephonySap *sap, GDBusMethodInvocation *invo
        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));
 
@@ -112,6 +121,9 @@ static gboolean on_sap_get_atr(TelephonySap *sap, GDBusMethodInvocation *invocat
        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));
 
@@ -145,6 +157,9 @@ static gboolean on_sap_transfer_apdu(TelephonySap *sap, GDBusMethodInvocation *i
        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));
 
@@ -190,6 +205,9 @@ static gboolean on_sap_set_protocol(TelephonySap *sap, GDBusMethodInvocation *in
        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));
 
@@ -214,6 +232,9 @@ static gboolean on_sap_set_power(TelephonySap *sap, GDBusMethodInvocation *invoc
        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));
 
@@ -237,6 +258,9 @@ static gboolean on_sap_get_card_reader_status(TelephonySap *sap, GDBusMethodInvo
        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));
 
index fd221883e0eff9c587a113c7422e62486e0c359d..353491e8c6402e22416ee8661e0bf44b54e3d0bb 100644 (file)
--- a/src/sat.c
+++ b/src/sat.c
@@ -51,6 +51,8 @@ static gboolean on_sat_get_main_menu_info(TelephonySAT *sat, GDBusMethodInvocati
        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");
@@ -78,6 +80,9 @@ static gboolean on_sat_send_display_status(TelephonySAT *sat, GDBusMethodInvocat
        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){
@@ -109,6 +114,9 @@ static gboolean on_sat_send_user_confirm(TelephonySAT *sat, GDBusMethodInvocatio
        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){
@@ -142,6 +150,9 @@ static gboolean on_sat_send_app_exec_result(TelephonySAT *sat, GDBusMethodInvoca
        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){
@@ -172,6 +183,9 @@ static gboolean on_sat_select_menu(TelephonySAT *sat, GDBusMethodInvocation *inv
 
        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;
@@ -198,9 +212,11 @@ static gboolean on_sat_download_event(TelephonySAT *sat, GDBusMethodInvocation *
        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;
index f54b85a974e660948aebfc4cda6f0795729003e3..e1591beeb5c16ddaf668a67b63a67f9b18f96702 100644 (file)
--- a/src/sim.c
+++ b/src/sim.c
@@ -139,6 +139,9 @@ static gboolean on_sim_get_imsi(TelephonySim *sim, GDBusMethodInvocation *invoca
        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);
@@ -166,6 +169,9 @@ static gboolean on_sim_get_ecc(TelephonySim *sim, GDBusMethodInvocation *invocat
        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}"));
@@ -194,6 +200,9 @@ static gboolean on_sim_get_iccid(TelephonySim *sim, GDBusMethodInvocation *invoc
        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);
 
@@ -214,6 +223,9 @@ static gboolean on_sim_get_language(TelephonySim *sim, GDBusMethodInvocation *in
        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);
@@ -232,8 +244,11 @@ static gboolean on_sim_set_language(TelephonySim *sim, GDBusMethodInvocation *in
        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;
 
@@ -258,6 +273,9 @@ static gboolean on_sim_get_call_forwarding(TelephonySim *sim, GDBusMethodInvocat
        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);
@@ -300,6 +318,10 @@ static gboolean on_sim_set_call_forwarding(TelephonySim *sim, GDBusMethodInvocat
        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));
@@ -353,6 +375,9 @@ static gboolean on_sim_get_message_waiting(TelephonySim *sim, GDBusMethodInvocat
        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);
@@ -394,6 +419,10 @@ static gboolean on_sim_set_message_waiting(TelephonySim *sim, GDBusMethodInvocat
        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));
@@ -445,6 +474,9 @@ static gboolean on_sim_get_mailbox(TelephonySim *sim, GDBusMethodInvocation *inv
        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);
@@ -479,6 +511,10 @@ static gboolean on_sim_set_mailbox(TelephonySim *sim, GDBusMethodInvocation *inv
        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));
@@ -528,6 +564,9 @@ static gboolean on_sim_get_cphsinfo(TelephonySim *sim, GDBusMethodInvocation *in
        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);
@@ -547,6 +586,9 @@ static gboolean on_sim_get_msisdn(TelephonySim *sim, GDBusMethodInvocation *invo
        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);
@@ -571,6 +613,9 @@ static gboolean on_sim_get_oplmnwact(TelephonySim *sim, GDBusMethodInvocation *i
        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);
@@ -595,6 +640,9 @@ static gboolean on_sim_get_spn(TelephonySim *sim, GDBusMethodInvocation *invocat
        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);
@@ -614,6 +662,9 @@ static gboolean on_sim_get_cphs_netname(TelephonySim *sim, GDBusMethodInvocation
        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);
@@ -640,8 +691,11 @@ static gboolean on_sim_authentication(TelephonySim *sim, GDBusMethodInvocation *
        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;
@@ -709,8 +763,11 @@ static gboolean on_sim_verify_sec(TelephonySim *sim, GDBusMethodInvocation *invo
        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;
@@ -738,8 +795,11 @@ static gboolean on_sim_verify_puk(TelephonySim *sim, GDBusMethodInvocation *invo
        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;
@@ -769,8 +829,11 @@ static gboolean on_sim_change_pin(TelephonySim *sim, GDBusMethodInvocation *invo
        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;
@@ -799,8 +862,11 @@ static gboolean on_sim_disable_facility(TelephonySim *sim, GDBusMethodInvocation
        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);
@@ -853,8 +919,11 @@ static gboolean on_sim_enable_facility(TelephonySim *sim, GDBusMethodInvocation
        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);
@@ -906,8 +975,11 @@ static gboolean on_sim_get_facility(TelephonySim *sim, GDBusMethodInvocation *in
        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);
@@ -957,8 +1029,11 @@ static gboolean on_sim_get_lock_info(TelephonySim *sim, GDBusMethodInvocation *i
        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);
@@ -1008,13 +1083,15 @@ static gboolean on_sim_transfer_apdu(TelephonySim *sim, GDBusMethodInvocation *i
        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));
 
@@ -1058,6 +1135,9 @@ static gboolean on_sim_get_atr(TelephonySim *sim, GDBusMethodInvocation *invocat
        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);
index e286f5e935f40a8634a9c4dd4342d6fd8590943b..ee917940e326dc2f30aa843ccb4a8f07429728da 100644 (file)
--- a/src/sms.c
+++ b/src/sms.c
@@ -59,6 +59,9 @@ on_sms_send_msg(TelephonySms *sms, GDBusMethodInvocation *invocation,
        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);
@@ -106,6 +109,9 @@ on_sms_read_msg(TelephonySms *sms, GDBusMethodInvocation *invocation,
        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);
@@ -137,6 +143,9 @@ on_sms_save_msg(TelephonySms *sms, GDBusMethodInvocation *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;
 
@@ -183,6 +192,9 @@ on_sms_delete_msg(TelephonySms *sms, GDBusMethodInvocation *invocation,
        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);
@@ -206,6 +218,9 @@ on_sms_get_msg_count(TelephonySms *sms, GDBusMethodInvocation *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);
@@ -228,6 +243,9 @@ on_sms_get_sca(TelephonySms *sms, GDBusMethodInvocation *invocation,
        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);
@@ -256,6 +274,9 @@ on_sms_set_sca(TelephonySms *sms, GDBusMethodInvocation *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;
@@ -310,6 +331,9 @@ on_sms_get_cb_config(TelephonySms *sms, GDBusMethodInvocation *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_cb_config), &getCbConfig);
        tcore_user_request_set_command(ur, TREQ_SMS_GET_CB_CONFIG);
@@ -344,6 +368,9 @@ on_sms_set_cb_config(TelephonySms *sms, GDBusMethodInvocation *invocation,
        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;
@@ -384,6 +411,9 @@ on_sms_set_mem_status(TelephonySms *sms, GDBusMethodInvocation *invocation,
        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);
@@ -407,6 +437,9 @@ on_sms_get_pref_bearer(TelephonySms *sms, GDBusMethodInvocation *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);
@@ -429,6 +462,9 @@ on_sms_set_pref_bearer(TelephonySms *sms, GDBusMethodInvocation *invocation,
        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);
@@ -460,6 +496,9 @@ on_sms_set_delivery_report(TelephonySms *sms, GDBusMethodInvocation *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);
@@ -508,6 +547,9 @@ on_sms_set_msg_status(TelephonySms *sms, GDBusMethodInvocation *invocation,
        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;
 
@@ -533,6 +575,9 @@ on_sms_get_sms_params(TelephonySms *sms, GDBusMethodInvocation *invocation,
        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);
@@ -578,6 +623,9 @@ on_sms_set_sms_params(TelephonySms *sms, GDBusMethodInvocation *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;
@@ -645,6 +693,9 @@ on_sms_get_sms_param_cnt(TelephonySms *sms, GDBusMethodInvocation *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_paramcnt), &getParamCnt);
        tcore_user_request_set_command(ur, TREQ_SMS_GET_PARAMCNT);
index ad343cc98b34d786c2cbd80dbefeabb35a7b1a2c..441f7bacf5e219174bedaa6addea9a2ca91827ad 100644 (file)
--- a/src/ss.c
+++ b/src/ss.c
@@ -292,6 +292,20 @@ on_ss_register_forwarding (TelephonySs *ss,
        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;
@@ -339,6 +353,23 @@ on_ss_deregister_forwarding (TelephonySs *ss,
        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;
@@ -386,6 +417,23 @@ on_ss_activate_forwarding (TelephonySs *ss,
        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;
@@ -433,6 +481,23 @@ on_ss_deactivate_forwarding (TelephonySs *ss,
        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;
@@ -478,6 +543,23 @@ on_ss_get_forwarding_status (TelephonySs *ss,
        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;
index 8c8e7abcfaec5889e0d5f3f5e203fc1df5cd02f8..97e8c3134908aa65aaf95cec6195b148dff5b49f 100644 (file)
@@ -1,11 +1,5 @@
 <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>