From: Daniel Wagner <[email protected]>
---
plugins/session_policy_local.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/plugins/session_policy_local.c b/plugins/session_policy_local.c
index 2708420..dda65b7 100644
--- a/plugins/session_policy_local.c
+++ b/plugins/session_policy_local.c
@@ -83,6 +83,7 @@ static void free_policy(gpointer user_data)
if (policy->config != NULL)
g_slist_free(policy->config->allowed_bearers);
+ g_free(policy->config->id);
g_free(policy->filename);
g_free(policy->lsm_ctx);
g_free(policy->user);
@@ -243,6 +244,22 @@ static void selinux_context_reply(int error,
policy->gid = data->gid;
policy->session = data->session;
+ if (g_strcmp0(policy->filename, policy->lsm_ctx) == 0) {
+ policy->config->id_type = CONNMAN_SESSION_ID_TYPE_LSM;
+ policy->config->id = ctx;
+ ctx = NULL;
+ } else if (g_strcmp0(policy->filename, policy->user) == 0) {
+ policy->config->id_type = CONNMAN_SESSION_ID_TYPE_UID;
+ policy->config->id = g_strdup(policy->user);
+ } else if (g_strcmp0(policy->filename, policy->group) == 0) {
+ policy->config->id_type = CONNMAN_SESSION_ID_TYPE_GID;
+ policy->config->id = g_strdup(policy->group);
+ } else {
+ /* no policy file found. fallback is UID */
+ policy->config->id_type = CONNMAN_SESSION_ID_TYPE_UID;
+ policy->config->id = g_strdup(policy->user);
+ }
+
g_hash_table_replace(session_hash, data->session, policy);
config = policy->config;
@@ -320,6 +337,14 @@ static void get_uid_reply(int error, unsigned int uid,
void *user_data)
policy->gid = data->gid;
policy->session = data->session;
+ if (g_strcmp0(policy->filename, policy->user) == 0) {
+ policy->config->id_type = CONNMAN_SESSION_ID_TYPE_UID;
+ policy->config->id = g_strdup(policy->user);
+ } else if (g_strcmp0(policy->filename, policy->group) == 0) {
+ policy->config->id_type = CONNMAN_SESSION_ID_TYPE_GID;
+ policy->config->id = g_strdup(policy->group);
+ }
+
g_hash_table_replace(session_hash, data->session, policy);
config = policy->config;
--
1.8.2.rc3.16.gce432ca
_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman