summaryrefslogtreecommitdiffstats
path: root/gdbus/object.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2010-09-09 16:39:46 +0200
committerMarcel Holtmann <marcel@holtmann.org>2010-09-09 18:26:36 +0200
commite173173a1f2b966fea6b0e0863b919e446a0a2c2 (patch)
treeaf7495bf6268c838144b50b670b21e88ce22453d /gdbus/object.c
parent679f17303dbe792c69dae097b825fcf10ae23ad1 (diff)
downloadofono-e173173a1f2b966fea6b0e0863b919e446a0a2c2.tar.bz2
Add support for GDBus security action and flags
Diffstat (limited to 'gdbus/object.c')
-rw-r--r--gdbus/object.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/gdbus/object.c b/gdbus/object.c
index 48530f2a..725c0bbb 100644
--- a/gdbus/object.c
+++ b/gdbus/object.c
@@ -317,9 +317,10 @@ static gboolean check_privilege(DBusConnection *conn, DBusMessage *msg,
{
const GDBusSecurityTable *security;
- for (security = security_table; security && security->function &&
- security->privilege; security++) {
+ for (security = security_table; security && security->privilege;
+ security++) {
struct security_data *secdata;
+ gboolean interaction;
if (security->privilege != method->privilege)
continue;
@@ -332,7 +333,14 @@ static gboolean check_privilege(DBusConnection *conn, DBusMessage *msg,
pending_security = g_slist_prepend(pending_security, secdata);
- security->function(conn, secdata->pending);
+ if (security->flags & G_DBUS_SECURITY_FLAG_ALLOW_INTERACTION)
+ interaction = TRUE;
+ else
+ interaction = FALSE;
+
+ if (security->function)
+ security->function(conn, security->action,
+ interaction, secdata->pending);
return TRUE;
}