From: Daniel Wagner <[email protected]>
Use the global callback helpers instead using the local version.
---
include/dbus.h | 7 ++++---
plugins/session_policy_local.c | 12 ++++++------
src/dbus.c | 30 +++++++-----------------------
3 files changed, 17 insertions(+), 32 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 cb1f46e..a09faef 100644
--- a/plugins/session_policy_local.c
+++ b/plugins/session_policy_local.c
@@ -159,8 +159,8 @@ static void policy_unref(struct policy_data *policy)
g_hash_table_remove(policy_hash, policy->ident);
};
-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;
@@ -171,12 +171,12 @@ 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;
ident = parse_ident(context);
if (ident == NULL) {
- err = -EINVAL;
+ error = -EINVAL;
goto done;
}
@@ -187,7 +187,7 @@ static void selinux_context_reply(const unsigned char
*context, void *user_data,
} else {
policy = create_policy(ident);
if (policy == NULL) {
- err = -ENOMEM;
+ error = -ENOMEM;
goto done;
}
}
@@ -196,7 +196,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.2.rc3.16.gce432ca
_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman