From: Daniel Wagner <daniel.wag...@bmw-carit.de>

Use the global callback helpers instead using the local version.
---
 include/dbus.h                 |  7 ++++---
 plugins/session_policy_local.c | 10 +++++-----
 src/dbus.c                     | 30 +++++++-----------------------
 3 files changed, 16 insertions(+), 31 deletions(-)

diff --git a/include/dbus.h b/include/dbus.h
index c00488e..07b44ab 100644
--- a/include/dbus.h
+++ b/include/dbus.h
@@ -171,12 +171,13 @@ static inline void 
connman_dbus_dict_append_fixed_array(DBusMessageIter *dict,
 dbus_bool_t connman_dbus_validate_ident(const char *ident);
 char *connman_dbus_encode_string(const char *value);
 
-typedef void (* connman_dbus_get_context_cb_t) (const unsigned char *context,
-                                               void *user_data, int err);
+typedef void (* connman_dbus_get_context_cb_t) (int error,
+                                               const unsigned char *context,
+                                               void *user_data);
 
 int connman_dbus_get_selinux_context(DBusConnection *connection,
                                const char *service,
-                               connman_dbus_get_context_cb_t func,
+                               connman_dbus_get_context_cb_t cb,
                                void *user_data);
 
 #ifdef __cplusplus
diff --git a/plugins/session_policy_local.c b/plugins/session_policy_local.c
index 9366cb0..c28b856 100644
--- a/plugins/session_policy_local.c
+++ b/plugins/session_policy_local.c
@@ -178,8 +178,8 @@ static struct policy_data *find_policy_by_session(const 
char *lsm_ctx)
        return NULL;
 }
 
-static void selinux_context_reply(const unsigned char *context, void 
*user_data,
-                                       int err)
+static void selinux_context_reply(int error,
+                               const unsigned char *context, void *user_data)
 {
        struct cb_data *cbd = user_data;
        connman_session_config_cb_t cb = cbd->cb;
@@ -190,7 +190,7 @@ static void selinux_context_reply(const unsigned char 
*context, void *user_data,
 
        DBG("session %p", data->session);
 
-       if (err < 0)
+       if (error < 0)
                goto done;
 
        ctx = g_strdup((const gchar*)context);
@@ -199,7 +199,7 @@ static void selinux_context_reply(const unsigned char 
*context, void *user_data,
 
        ident = parse_selinux_type(ctx);
        if (ident == NULL) {
-               err = -EINVAL;
+               error = -EINVAL;
                goto done;
        }
 
@@ -216,7 +216,7 @@ static void selinux_context_reply(const unsigned char 
*context, void *user_data,
        config = policy->config;
 
 done:
-       (*cb)(err, data->session, config, cbd->user_data);
+       (*cb)(error, data->session, config, cbd->user_data);
 
        g_free(cbd);
        g_free(data);
diff --git a/src/dbus.c b/src/dbus.c
index 70af617..7c69b87 100644
--- a/src/dbus.c
+++ b/src/dbus.c
@@ -406,11 +406,6 @@ dbus_bool_t 
__connman_dbus_append_objpath_dict_array(DBusMessage *msg,
        return TRUE;
 }
 
-struct selinux_data {
-       connman_dbus_get_context_cb_t func;
-       void *user_data;
-};
-
 static unsigned char *parse_context(DBusMessage *msg)
 {
        DBusMessageIter iter, array;
@@ -448,7 +443,8 @@ static unsigned char *parse_context(DBusMessage *msg)
 
 static void selinux_get_context_reply(DBusPendingCall *call, void *user_data)
 {
-       struct selinux_data *data = user_data;
+       struct cb_data *cbd = user_data;
+       connman_dbus_get_context_cb_t cb = cbd->cb;
        DBusMessage *reply;
        unsigned char *context = NULL;
        int err = 0;
@@ -470,7 +466,7 @@ static void selinux_get_context_reply(DBusPendingCall 
*call, void *user_data)
        context = parse_context(reply);
 
 done:
-       (*data->func)(context, data->user_data, err);
+       (*cb)(err, context, cbd->user_data);
 
        g_free(context);
 
@@ -481,23 +477,14 @@ done:
 
 int connman_dbus_get_selinux_context(DBusConnection *connection,
                                const char *service,
-                               connman_dbus_get_context_cb_t func,
+                               connman_dbus_get_context_cb_t cb,
                                void *user_data)
 {
-       struct selinux_data *data;
+       struct cb_data *cbd = cb_data_new(cb, user_data);
        DBusPendingCall *call;
        DBusMessage *msg = NULL;
        int err;
 
-       if (func == NULL)
-               return -EINVAL;
-
-       data = g_try_new0(struct selinux_data, 1);
-       if (data == NULL) {
-               DBG("Can't allocate data structure");
-               return -ENOMEM;
-       }
-
        msg = dbus_message_new_method_call(DBUS_SERVICE_DBUS, DBUS_PATH_DBUS,
                                        DBUS_INTERFACE_DBUS,
                                        "GetConnectionSELinuxSecurityContext");
@@ -523,11 +510,8 @@ int connman_dbus_get_selinux_context(DBusConnection 
*connection,
                goto err;
        }
 
-       data->func = func;
-       data->user_data = user_data;
-
        dbus_pending_call_set_notify(call, selinux_get_context_reply,
-                                                       data, g_free);
+                                                       cbd, g_free);
 
        dbus_message_unref(msg);
 
@@ -535,7 +519,7 @@ int connman_dbus_get_selinux_context(DBusConnection 
*connection,
 
 err:
        dbus_message_unref(msg);
-       g_free(data);
+       g_free(cbd);
 
        return err;
 }
-- 
1.8.1.3.566.gaa39828

_______________________________________________
connman mailing list
connman@connman.net
http://lists.connman.net/listinfo/connman

Reply via email to