summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <matthias.clasen@gmail.com>2010-08-19 12:45:13 +0200
committerMartin Pitt <martin.pitt@ubuntu.com>2010-08-19 12:45:13 +0200
commit1fc5aae71f474f82ba62c7a92be3aef05cc7ebef (patch)
treeb10cff0f9c05ee4beed69149a7e6a0efbfcbeceb
parent43ed5814cfd8dcfa9817777d6145a270a442f5c7 (diff)
Add missing D-Bus return in up_qos_cancel_request()
Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
-rw-r--r--src/up-daemon.c26
-rw-r--r--src/up-polkit.c14
-rw-r--r--src/up-polkit.h4
-rw-r--r--src/up-qos.c2
4 files changed, 34 insertions, 12 deletions
diff --git a/src/up-daemon.c b/src/up-daemon.c
index 40bab80..6c5c320 100644
--- a/src/up-daemon.c
+++ b/src/up-daemon.c
@@ -480,7 +480,7 @@ up_daemon_suspend (UpDaemon *daemon, DBusGMethodInvocation *context)
if (subject == NULL)
goto out;
- if (!up_polkit_check_auth (priv->polkit, subject, "org.freedesktop.upower.suspend", context))
+ if (!up_polkit_check_auth (priv->polkit, subject, "org.freedesktop.upower.suspend", NULL))
goto out;
/* already requested */
@@ -511,13 +511,21 @@ up_daemon_suspend_allowed (UpDaemon *daemon, DBusGMethodInvocation *context)
gboolean ret;
PolkitSubject *subject = NULL;
UpDaemonPrivate *priv = daemon->priv;
+ GError *error;
subject = up_polkit_get_subject (priv->polkit, context);
if (subject == NULL)
goto out;
- ret = up_polkit_is_allowed (priv->polkit, subject, "org.freedesktop.upower.suspend", context);
- dbus_g_method_return (context, ret);
+ error = NULL;
+ ret = up_polkit_is_allowed (priv->polkit, subject, "org.freedesktop.upower.suspend", &error);
+ if (error) {
+ dbus_g_method_return_error (context, error);
+ g_error_free (error);
+ }
+ else {
+ dbus_g_method_return (context, ret);
+ }
out:
if (subject != NULL)
@@ -627,13 +635,21 @@ up_daemon_hibernate_allowed (UpDaemon *daemon, DBusGMethodInvocation *context)
gboolean ret;
PolkitSubject *subject = NULL;
UpDaemonPrivate *priv = daemon->priv;
+ GError *error;
subject = up_polkit_get_subject (priv->polkit, context);
if (subject == NULL)
goto out;
- ret = up_polkit_is_allowed (priv->polkit, subject, "org.freedesktop.upower.hibernate", context);
- dbus_g_method_return (context, ret);
+ error = NULL;
+ ret = up_polkit_is_allowed (priv->polkit, subject, "org.freedesktop.upower.hibernate", &error);
+ if (error) {
+ dbus_g_method_return_error (context, error);
+ g_error_free (error);
+ }
+ else {
+ dbus_g_method_return (context, ret);
+ }
out:
if (subject != NULL)
diff --git a/src/up-polkit.c b/src/up-polkit.c
index 9b86394..03e6952 100644
--- a/src/up-polkit.c
+++ b/src/up-polkit.c
@@ -52,12 +52,19 @@ static gpointer up_polkit_object = NULL;
PolkitSubject *
up_polkit_get_subject (UpPolkit *polkit, DBusGMethodInvocation *context)
{
+ GError *error;
const gchar *sender;
PolkitSubject *subject;
sender = dbus_g_method_get_sender (context);
subject = polkit_system_bus_name_new (sender);
+ if (subject == NULL) {
+ error = g_error_new (UP_DAEMON_ERROR, UP_DAEMON_ERROR_GENERAL, "failed to get PolicyKit subject");
+ dbus_g_method_return_error (context, error);
+ g_error_free (error);
+ }
+
return subject;
}
@@ -103,10 +110,9 @@ out:
* up_polkit_is_allowed:
**/
gboolean
-up_polkit_is_allowed (UpPolkit *polkit, PolkitSubject *subject, const gchar *action_id, DBusGMethodInvocation *context)
+up_polkit_is_allowed (UpPolkit *polkit, PolkitSubject *subject, const gchar *action_id, GError **error)
{
gboolean ret = FALSE;
- GError *error;
GError *error_local = NULL;
PolkitAuthorizationResult *result;
@@ -116,10 +122,8 @@ up_polkit_is_allowed (UpPolkit *polkit, PolkitSubject *subject, const gchar *act
POLKIT_CHECK_AUTHORIZATION_FLAGS_NONE,
NULL, &error_local);
if (result == NULL) {
- error = g_error_new (UP_DAEMON_ERROR, UP_DAEMON_ERROR_GENERAL, "failed to check authorisation: %s", error_local->message);
- dbus_g_method_return_error (context, error);
+ g_set_error (error, UP_DAEMON_ERROR, UP_DAEMON_ERROR_GENERAL, "failed to check authorisation: %s", error_local->message);
g_error_free (error_local);
- g_error_free (error);
goto out;
}
diff --git a/src/up-polkit.h b/src/up-polkit.h
index acee70e..14e53b0 100644
--- a/src/up-polkit.h
+++ b/src/up-polkit.h
@@ -56,11 +56,11 @@ PolkitSubject *up_polkit_get_subject (UpPolkit *polkit,
gboolean up_polkit_check_auth (UpPolkit *polkit,
PolkitSubject *subject,
const gchar *action_id,
- DBusGMethodInvocation *context);
+ DBusGMethodInvocation *context);
gboolean up_polkit_is_allowed (UpPolkit *polkit,
PolkitSubject *subject,
const gchar *action_id,
- DBusGMethodInvocation *context);
+ GError **error);
gboolean up_polkit_get_uid (UpPolkit *polkit,
PolkitSubject *subject,
uid_t *uid);
diff --git a/src/up-qos.c b/src/up-qos.c
index 70f1690..f08c439 100644
--- a/src/up-qos.c
+++ b/src/up-qos.c
@@ -395,6 +395,8 @@ up_qos_cancel_request (UpQos *qos, guint cookie, DBusGMethodInvocation *context)
/* TODO: if persistent remove from datadase */
g_signal_emit (qos, signals [REQUESTS_CHANGED], 0);
+
+ dbus_g_method_return (context, NULL);
out:
if (subject != NULL)
g_object_unref (subject);