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