diff options
author | Matthias Clasen <matthias.clasen@gmail.com> | 2010-08-19 12:45:13 +0200 |
---|---|---|
committer | Martin Pitt <martin.pitt@ubuntu.com> | 2010-08-19 12:45:13 +0200 |
commit | 1fc5aae71f474f82ba62c7a92be3aef05cc7ebef (patch) | |
tree | b10cff0f9c05ee4beed69149a7e6a0efbfcbeceb | |
parent | 43ed5814cfd8dcfa9817777d6145a270a442f5c7 (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.c | 26 | ||||
-rw-r--r-- | src/up-polkit.c | 14 | ||||
-rw-r--r-- | src/up-polkit.h | 4 | ||||
-rw-r--r-- | src/up-qos.c | 2 |
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); |